头文件: <vector>
存储方式:顺序容器,类似数组,开辟整块内存进行顺序存储。在虚拟内存空间是整块的。
内存管理:vector会有内存迁移能力,当当前内存不够用时,就会重新开辟一块大内存将数组整体复制过去,再释放以前的内存,这样效率会很低。
当发生内存重新分配以后,以前所有迭代器对象会全部失效。
看个图:
常用方法:
reserver():预留一定的空间,改变capcaity,不改变size,会分配内存,但是不构造对象。
resize() :用来改变vector的size,可能会改变capacity,会初始化多出来的对象。
以上两个方法都是用于vector做内存管理,使用恰当可以检查relocate memory次数。
push_back(100):在尾部添加元素,是在如上图的finsh指针后添加元素。传入参数为对应元素。
insert():指定位置插入元素。
erase():删除元素,删除元素之后,被删除元素之后所有元素的迭代器失效,并且返回下一个元素的迭代器。会返回下个元素的迭代器。
pop_back():删除末尾的元素。
clear():清空vector。
size():返回vector的size。
capacity():返回vector的容量。