C++中vector的扩容过程是怎样的?
1.底层原理:vector的底层是动态数组,其在内存中是连续存储的。vector中维护三个迭代器和两个变量。三个迭代器分别指向容器的起始位置、最后一个元素和容器的末尾。两个变量分别为size和capacity,其中size为容器中元素的数量,而capacity为容器所占的内存。当初始化vector容器时,会初始化一块空间用来存储元素,初始化空间的大小由构造函数的参数决定,缺省时默认为0。
2.扩容机制:当容器中的元素数量等于其占有的内存空间时,vector会向系统申请一块更大的内存,然后将旧内存中的所有元素移动过去。因此扩容有可能导致迭代器或指针失效。