随笔分类 - C/C++
摘要:前面我们分析了vector,这篇介绍STL中另一个重要的容器list list的设计 list由三部分构成:list节点、list迭代器、list本身 list节点 list是一个双向链表,所以其list节点中有前后两个指针。如下: list迭代器 前面我们说过vector是利用其内存分配类型成员给
阅读全文
摘要:STL—对象的构造与析构 STL—内存的配置与释放 STL—vector STL—vector空间的动态增长 STL—list
阅读全文
摘要:前面介绍了STL对象的构造与析构以及内存的配置与释放,那具体的容器是怎么应用STL的空间配置器的呢?这篇先介绍STL的容器vector。 vector的数据成员 vector只有4个数据成员:3个迭代器、1个内存配置器。 STL会为每个容器都设置一个内存配置器的成员,这里的内存配置器就是前面介绍的S
阅读全文
摘要:vector空间的动态增长 vector空间的动态增长 当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间。vector的空间动态增加大小,并不是在原空间之后的相邻地址增加新空间,因为vector
阅读全文
摘要:上一篇我们介绍了STL对象的构造与析构,这篇介绍STL内存的配置与释放。 STL有两级空间配置器,默认是使用第二级。第二级空间配置器会在某些情况下去调用第一级空间配置器。空间配置器都是在allocate函数内分配内存,在deallocate函数内释放内存。 第一级空间配置器 第一级配置器只是对mal
阅读全文
摘要:STL内存空间的配置/释放与对象内容的构造/析构,是分开进行的。 对象的构造、析构 对象的构造由construct函数完成,该函数内部调用定位new运算符,在指定的内存位置构造对象。如下: template <typename T1, typename T2> inline void constru
阅读全文
摘要:MiniSTL 目前正在完成一个STL,主要想通过该项目锻炼C++编程、模板编程、熟悉STL、锻炼数据结构和算法能力。 项目的目标是实现STL的几大构件+线程安全。项目过程中主要参考SGI STL源码,项目名称为:MiniSTL。 目前已完成空间配置器和迭代器部分,接下来会去实现容器和算法,最后还会
阅读全文

浙公网安备 33010602011771号