代码改变世界

阅读排行榜

STL源码剖析之序列式容器list

2011-06-07 13:48 by Aga.J, 924 阅读, 收藏,
摘要: 33 ListList是一个紧凑型的容器,每次插入或者删除一个元素,就需要配置或者释放一个元素空间,并且,对于任何位置的元素插入或元素移除,list都是【常数】时间List的节点和List本身是不同的结构(这和vector一致)Template<class T>Struct __list_node{Typedef void* void_pointer; // typedef __list_node<T>* pointer;Void_pointer prev;Void_pointer next;T data;} 可以看出stl的list是基于链表的。因为list不是一种基 阅读全文

3D物体拾取及XNA实现(转)

2010-11-21 23:37 by Aga.J, 887 阅读, 收藏,
摘要: 最近在做到和3D模型的拾取有关的东西,找到了这篇不错的文章,加上自己的修改,基本解决了鼠标点击3D模型获取3D模型的坐标点的问题。所以转过来记录下。拾取原理拾取主要用来表示能过鼠标在屏幕上单击来选中某个3D模型,然后就可以获取这个模型信息,同时也可以对这个模型进行编辑。 拾取算法的主要思想是:得到鼠标点击处的屏幕坐标,通过投影矩阵和观察矩阵把该坐标转换为通过视点和鼠标点击点的一条射入场景的光线,该光线如果与场景模型的三角形相交,则获取该相交三角形的信息。 拾取的具体过程如下: 1.使用获取鼠标当前状态。 2.把屏幕坐标转换为屏幕空间坐标。 屏幕中心是(0, 0),屏幕右下角是 (1*(屏幕宽. 阅读全文

STL源码剖析之关联式容器底层的又一实现:Hash

2011-06-29 20:43 by Aga.J, 878 阅读, 收藏,
摘要: 281 hastable二叉搜索树再插入,删除,查找具有对数的平均时间,但是它是基于这样的假设,插入的数据具有一定的随机性,不然的话,如果是有序元素的插入,会使得二叉搜索树严重不平衡。而hashtable这种数据结构,在插入,删除,查找也有常数平均时间,而不依赖于插入元素的随机性,是以统计为基础的。Hash table可以提供对任何named item的存取和删除操作,因为所有被操作的对象都是named,所以hash table可以看做是一个dictionary。如何避免使用一个大得换谬的array呢,办法之一就是使用某种映射函数,将大数映射为小数,这样一来,array就不需要特别的大,但是可 阅读全文

STL源码剖析之开篇与内存配置器--学习笔记

2011-04-09 13:47 by Aga.J, 856 阅读, 收藏,
摘要: 1 从底层来看,STL带给我们一套具有实用价值的零部件,以及一个整合起来的整体,STL中组件之间耦合度很低,组件之间可以互相关联整合。2 STL以泛型思维,描述了很多抽象概念,以抽象概念为主体而不是依赖于实际的类3 STL六大组件:容器 : 数据结构(容纳数据)是一种class template算法 : 常用的算法,是一种function template迭代器:容器和算法之间的胶合剂,也是一种泛型组件,“泛型指针”,每个容器都有自己的迭代器,只有容器自己才知道如何使用自己的迭代器来完成迭代。仿函数:??适配器:修饰容器或者仿函数或者迭代器接口的东西,也就是改变了被适配的东西,提供了新的接口。 阅读全文

STL源码剖析之container,stream,functor Adapter

2011-07-02 13:44 by Aga.J, 846 阅读, 收藏,
摘要: 6 container adapter Stack是一个container adapter,它封装了所有的deque对外接口,只开放符合stack原则的几个函数,从stack的定义中我们可以看到,它是使用deque作为底层逻辑结构,封装其接口来暴露自身接口 Template<class T, class Sequence=deque<T> > Class stack { Protected: Sequence c; }; Queue也是同样的道理 Template< class T, class Sequence = deque<T> > Cla 阅读全文
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 33 下一页