C++ vector底层数据结构

vector
其底层数据结构是数组,由于数组的特点,vector也具有以下特性:
1、O(1)时间的快速访问;
2、顺序存储,所以插入到非尾结点位置所需时间复杂度为O(n),删除也一样;
3、扩容规则:
当我们新建一个vector的时候,会首先分配给他一片连续的内存空间,如std::vector vec,当通过push_back向其中增加元素时,如果初始分配空间已满,就会引起vector扩容,其扩容规则在gcc下以2倍方式完成:
首先重新申请一个2倍大的内存空间;
然后将原空间的内容拷贝过来;
最后将原空间内容进行释放,将内存交还给操作系统;

注意:
根据vector的插入和删除特性,以及扩容规则,我们在使用vector的时候要注意,在插入位置和删除位置之后的所有迭代器和指针引用都会失效,同理,扩容之后的所有迭代器指针和引用也都会失效。

END

你可能感兴趣的:(算法)