STL---规范】的更多相关文章

STL空间配置器(allocator)在所有容器内部默默工作,负责空间的配置和回收.STL标准为空间配置器定义了标准接口(可见<STL源码剖析>P43).而具体实现细节则由各编译器实现版本而不同.下面介绍SGI STL中的allocator(实际叫alloc)配置器.SGI STL源码下载地址:http://download.csdn.net/detail/wudaijun/6404589 一个简单的allocator配置器 首先我们来看一个SGI STL中符合标准,名为allocator的空…
traits编程技法大量运用于STL实现中.通过它在一定程度上弥补了C++不是强型别语言的遗憾,增强了C++关于型别认证方面的能力. traits编程技法是利用“内嵌型别”的编程技法和编译器的template参数推导功能实现的. iterator_traits 1.对于class type要求其“内嵌型别” 要求与STL兼容的容器,其迭代器必须定义一下五种型别: iterator_category 迭代器类型 value_type 迭代器所指对象类型 difference_type 迭代器间的距…
ANSI/ISO的C++ STL规范版本正式通过以后,各个C++编译器厂商就可以依照标准所描述的原型去实现C++ STL泛型库,于是出现多种符合标准接口,但具体实现代码不同的泛型库,主要有: HP STL HP STL是Alexandar Stepanov在惠普Palo Alto实验室工作时,与Meng Lee合作完成的.HP STL是C++ STL的第一个实现版本,而且是开放源码.其它版本的C++ STL一般是以HP STL为蓝本实现出来的. SGI STL 由Silicon Graphics…
这一节是讲空间的配置与释放,但不涉及对象的构造和析构,仅仅是解说对象构造前空前的申请以及对象析构后空间怎么释放. SGI版本号的STL对空间的的申请和释放做了例如以下考虑: 1.向堆申请空间 2.考虑了多线程.可是这节目的仅仅是解说空间配置与释放,因此忽略了多线程.集中学习空间的申请和释放. 3.内存不足时的应变措施 4.考虑到了内存碎片的问题.多次申请释放小块内存可能会造成内存碎片. 在C++中.内存的申请和释放是通过operator new函数和operator delete函数,这两个函数…
STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html List: http://www.cnblogs.com/scandy-yuan/archive/2013/01/08/2851324.html Deque: http://blog.csdn.net/longshengguoji/article/details/8519812 1.Array array是C+…
1. 符合STL标准的空间配器接口 STL是c++中使用非常广泛的一个标准库,它包含各种有用的容器.而空间配置器作为STL各种容器的背后的核心,负责容器内部内存的分配和释放.不过空间配置器可以分配的也不只是内存,因为空间也意味着可以是磁盘或者其他存储介质.下边是一个符合STL规范的空间配置器的必要接口: allocator::value_type allocator::pointer allocator::const_pointer allocator::reference allocator:…
本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie list ---------------------------------------------------------------------- ??为什么非常多在算法库里有的算法还要在类的成员函数里又一次实现一遍? -->1.由于算法库里的是通用的.对于详细的类来说效率不高. 比方说 reverse 假设直接用 stl_algo.h 里的 reverse,会再调用 iter_swa…
Deque是一种双向开口的连续线性空间.所谓的双向开口,就是能在头尾两端分别做元素的插入和删除,而且是在常数的时间内完成.虽然Vector也可以在首端进行元素的插入和删除(利用insert和erase),但效率奇差(涉及到整个数组的移动),无法被接受. 另外,Deque与Vector间最大的差别就是Deque没有类似于Vector中的容量的概念,因为Deque是以分段连续空间组合而成的,至于什么是分段连续空间,等会会详细讨论.所以Deque不会有像Vector那样“因旧空间不足而重新配置一块更大…
最后一个迭代器的相应类型就是iterator_category,就是迭代器本身的类型,根据移动特性与实行的操作,迭代器被分为了五类: Input Iterator:这种迭代器所指的对象,不允许外界改变.只读(read only). Output Iterator:唯写(write only) Forward Iterator:允许写入型算法在此种迭代器所形成的区间上进行读写操作,具有Input迭代器的全部功能和Output迭代器的大部分功能.支持++运算符. Bidirectional Iter…
看了候哥的<STL源码剖析>的迭代器那一章,在这里将思路稍微疏理一下 迭代器 迭代器模式的定义:提供一种方法,在不需要暴露某个容器的内部表现形式情况下,使之能依次访问该容器中的各个元素. 迭代器在STL中得到了广泛的应用,通过迭代器,容器和算法可以有机的粘合在一起,只要对算法给予不同的迭代器,就可以对不同容器进行相同的操作.也就是说,数据容器和算法是分开的. 独立的迭代器并不能满足我们的要求,在实现独立的迭代器时无可避免的会暴露出容器中的很多内容,所以STL将迭代器的实现交给了容器,每种容器都…