完整代码见: LiTianxiong/Standard-Template-Library
vector
vector
是最常用的序列式容器之一, 这份简单的vector
实现只是实现了一些基本的方法, 迭代器也是直接使用了指针
vector
内部使用一块连续的内存空间来存储数据, 当容量不足时, 将会申请一块大小为max(原来大小的两倍, 所需要的空间大小)
的一块新空间, 然后将原来元素移动到新的空间内, 将原来的空间析构并释放
vector
中, 复制和填充内容时, 用到了copy
, fill
和uninitial_copy/fill
等函数, 其中对于已经构造过的内存区域, 直接使用copy
和fill
函数, 而对于没有初始化过的内存区域, 则使用unintial_xx
函数进行对象的构造, unitial_xx
函数能够根据对象的类型, 来选择效率最高的构造方式(对于pod类型, 直接复制内存, 对于非pod类型, 则调用构造函数)