我用VS2013写的程序(github ),vector版本的代码位于cghSTL/version/cghSTL-0.3.1.rar
我是照着侯捷老师的《STL源码剖析》做的cghSTL,现在才看到第三章,觉得这本书的编排非常适合自学。
第一章讲解空间配置器,这是STL最基础的部件,没什么好说的。
第二章讲解迭代器,老师举了单向链表的例子,这非常有考究,单向链表不需要连续的存储空间,意味着使用单向链表实现的容器不需要考虑空间溢出等问题,我们可以把注意力集中在容器的迭代器上。
第三章讲解序列式容器,第一节介绍vector的实现,vector需要考虑空间的连续使用和空间溢出等问题,而正因为vector维护的是连续线性空间,所以不论其元素类型为何,普通指针都可以作为vector的迭代器而满足所有必要条件!这成功的避开了设计容器时不得不分散精力设计迭代器的坑!
侯捷老师写书真是有水平啊!
言归正传,接下来我们看看一个vector的实现细节。
我们一共有四个文件:
1. globalConstruct.h,构造和析构函数文件,位于