vector
是动态空间,随着元素的加⼊,它的内部机制会⾃⾏扩充空间以容纳新元素。
vector
维护的是⼀个连续的线性空间,⽽且普通指针就可以满⾜要求作为 vector
的迭代(
RandomAccessIterator
)。
vector
的数据结构中其实就是
三个迭代器构成的,⼀个指向⽬前使⽤空间头的 iterator,⼀个指向⽬前使⽤空间尾的iterator,⼀个指向⽬前可⽤空间尾的iterator。
当有新的元素插⼊时,如果⽬前容量够⽤则直接插⼊,如果容量不够,则容量扩充⾄两倍,如果两倍容量不⾜, 就扩张⾄⾜够⼤的容量。
扩充的过程并不是直接在原有空间后⾯追加容量,⽽是重新申请⼀块连续空间,将原有的数据拷⻉到新空间中,再释放原有空间