Vector在G2.9版本的定义相对简洁单纯,其中包含iterator的三个标志位:start、finish、end_of_storage,这里的finish和end_of_storage的不同之处在于,finish指的是加入元素的末尾,而end_of_storage指的是容器的存储单元最末尾,一般比finish要大。但是从源码成员函数上看来,容器的.end()返回的是finish而非end_of_storage。
下面是push_back()函数的源码:(里面的全局函数construct()函数是把后加入的元素X放到finish的位置上去)
vector容器的空间不够用的时候,会去开辟新空间并做拷贝构造,下面的try—catch结构是做拷贝构造的过程,
做完拷贝构造,后面必须跟上析构释放原来的不够的那块内存(destroy()和dellocate())。
下面是G4.9版的Vector:(目前看来除了复杂化了之外,核心并无卵变化)