摘要: deque是一种双向开口的连续性线性空间,可以在头尾都进行元素的插入和删除操作。是动态地以分段连续的空间组合而成,随时可以增加一段新的空间并连接起来。因此没有容量和空间保留的概念。提供随机访问迭代器,但不是以指针实现,复杂度很大。因此要多用vector少用deque对deque的排序操作,为了提高效率,可将deque先复制到vector中,排序后再拷回来。deque的中控器:从逻辑上看deque是连续空间,但是可以任意增长。有必要时在deque的前端或者尾端增加新的空间,便配置一段定量连续空间,串接在整个deque上。deque的最大任务就是维护其整体连续的假象,并提供随机访问接口。用一段ma 阅读全文
posted @ 2012-04-21 21:28 w0w0 阅读(232) 评论(0) 推荐(0)
摘要: 每次插入或者删除一个元素,就配置或者释放空间。插入和删除元素操作都是常数时间。list的节点:template<class T>struct __list_node{ typedef void* void_pointer; void_pointer prev; void_pointer next; T data;}是一个双向链表list的迭代器:不能用普通指针作为迭代器typedef __list_node<T>* link_type;link_type node;list是一个双向链表,提供迭代器为双向迭代器,可向前向后移动,但不提供随机访问能力插入删除接合操作不会引 阅读全文
posted @ 2012-04-21 17:31 w0w0 阅读(192) 评论(0) 推荐(0)
摘要: vector和array的使用非常相似,区别是vector是动态空间,随着新元素的介入,靠内部机制就可以自动扩充空间以容纳新元素vector的迭代器:由于vector维护的是一个线性空间,所以可以用普通指针作为迭代器。指针也具备随即存取能力,因此vector提供随机访问迭代器。vector的数据结构:线性连续空间。用start和finish指向目前已经被使用的范围中的头尾,并且以迭代器end_of_storage指向整块连续空间(包括备用空间)的末尾。vector实际分配的空间一定大于等于需要的空间,以备将来的扩充。capacity的概念。vector的构造与管理:vector缺省使用allo 阅读全文
posted @ 2012-04-21 16:15 w0w0 阅读(198) 评论(0) 推荐(0)
摘要: STL的中心思想在于:将数据容器与算法分开,彼此独立设计,然后用胶合剂将他们撮合在一起。迭代器最重要的操作就是对operator*和operator->进行重载为了不暴露容器的内部实现细节,每一种容器都有专属的迭代器,这样就可以把所有的实现细节封装起来不被使用者看到。在迭代器的设计上使用泛型思想:当算法中需要声明一个变量,要用到迭代器所指向的对象的类别(value_type)==>使用参数推到机制万一需要把该类型用于函数的传回值==>声明一个内嵌类型,使用关键词typename但并不是所有的指针类型都是class,如果是原生指针就无法定义内嵌类型==>在泛化设计中提供一 阅读全文
posted @ 2012-04-21 14:24 w0w0 阅读(253) 评论(0) 推荐(0)
摘要: STL源码剖析学习二:空间配置器(allocator)标准接口:vlaue_typepointerconst_pointerreferenceconst_referencesize_typedifference_typerebindallocator()--default constructorallocator(const allocator<U>&--copy constructor~allocator()--destructoraddress(reference x)const--return address of elemaddress(const_referenc 阅读全文
posted @ 2012-04-21 13:24 w0w0 阅读(249) 评论(0) 推荐(0)
摘要: STL源码剖析学习一:概论STL所实现的,是依据泛型思维架设起来的一个概念结构。这个以抽象概为主体而非以实际类为主体的结构,形成一个严谨的接口标准。在此接口之下,任何组件都有最大的独立性,并以迭代器胶合起来,或者以配接器互相连接,或者用仿函数动态选择某种策略。六大组件:1.容器:各种数据结构2.算法3.迭代器:容器和算法之间的胶合剂 是“泛型指针”4.仿函数:行为类似函数,可以作为算法的某种策略5.配接器:修饰容器或者仿函数或者迭代器接口的东西6.配置器:负责空间配置和动态管理语法要点:1.静态常量可以在class内部直接初始化一般的变量都是不能在class内部直接初始化的,即使是常量也不行常 阅读全文
posted @ 2012-04-21 11:16 w0w0 阅读(160) 评论(0) 推荐(0)