Bootstrap

STL 源码学习笔记——vector

Vector结构定义

vector所采用的数据结构非常简单:线性连续空间。它以两个迭代器start和finish分 别 指 向 配 置 得 来 的 连 续 空 间中 目 前 已 被 使 用 的 范 围 , 并 以 迭 代 器end_of_storage指向整块连续空间(含备用空间)的尾端:

template <class T, classAlloc = alloc> 
class vector{ 
... 
protected: 
iterator  start; //表示目前使用空间的头
iterator  finish; //表示目前使用空间的尾
iterator  end_of_storage;//表示目前可用空间的尾
... 
}; 

Vector方法实现

为了降低空间配置时的速度成本,vector实际配置的大小可能比客端需求量更大一些,以备将来可能的扩充。这便是容量(capacity)的观念。换句话说一个 vector 的容量永远大于或等于其大小。一旦容量等于大小,便是满载,下次再有新增元素,整个vector就得另觅居所。
运用start, finish, end_of_storage三个迭代器,便可轻易提供首尾标示、
大小、容量、空容器判断、注标([ ])运算子、最前端元素值、最后端元素值等机能:

template <class 
;