G2.9版本
上图展示了vector的底层结构和G2.9版本的源码。
vector实际上是一个数组,在vector中有一些变量记录了数组的信息,start记录了起始位置,finish记录数据结束位置。
当vector用完capacity的空间,vector会两倍增长,增长的方式是寻找一个两倍大小的空间,然后将所有元素拷贝过去。
对中间和开始处进行添加删除元素操作需要移动内存,如果你的元素是结构或是类,那么移动的同时还会进行拷贝构造和析构操作,所以性能不高 (最好将结构或类的指针放入vector中,而不是结构或类本身,这样可以避免移动时的构造与析构)。
G4.9版本
和list一样,G4.9定义和实现分离,遵循面向对象的设计方式。其他并无特别之处。