
STL源码剖析
文章平均质量分 58
One2zeror
这个作者很懒,什么都没留下…
展开
-
STL源码剖析(1):空间配置器
STL所有的操作对象(所有的数值)都存放在容器之内,容器需要分配空间以存放数据。为什么不说allocator是内存配置器而是空间配置器,因为空间不仅是内存,空间也可以是磁盘或其它辅助储存媒体。这里我们主要讨论内存配置。 SGI STL每个容器缺省的空间配置器为alloc,如vector: template<class T, class Alloc = alloc> clas原创 2015-06-17 21:32:44 · 522 阅读 · 0 评论 -
STL源码剖析(2):内存基本处理工具
内存基本处理工具: STL有五个全局函数,作用于未初始化空间上,它们分别是:construct(), destroy(), uninialized_copy(), uninialized_fill()和uninialized_fill_n()。 前两个函数前面文章有介绍,下面介绍后三个函数。 uninitialized_copy()使我们能够将内存的配置与对象的构造行为分离开来。如果作原创 2015-06-18 09:31:53 · 754 阅读 · 0 评论 -
STL源码剖析(4):容器(vector)
容器是很多人对STL的第一印象,vector,stack,queue,set,map等等都是容器。 这里先介绍 STL中的序列式容器。 所谓序列式容器,其中的元素可序(ordered),但未必有序(sorted)。C++ 本身提供了一个序列式容器——数组(array),STL中还提供了向量(vector),链表(list),堆栈(stack),队列(queue),优先队列(priorit原创 2015-06-19 15:33:57 · 703 阅读 · 0 评论 -
STL源码剖析(3):迭代器(iterators)
关于迭代器的基本介绍可以看我之前泛型编程的文章: STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最后再以一帖粘合剂将它们撮合在一起。 迭代器(iterator)是一种 smart pointer,关于智能指针可以看我之前的文章(智能指针)。 迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便原创 2015-06-19 14:32:49 · 855 阅读 · 0 评论 -
STL源码剖析(4):容器(list)
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list 内部为双向链表,内部元素互相以link串接起来,每个元素都知道其前一个元素以及下一个元素的位置。template <class T> struct _原创 2015-07-27 11:47:21 · 747 阅读 · 0 评论