概述
Vecotr扩容
1. 扩容原理
初始时刻vector的capacity为0,塞入第一个元素后capacity增加为1。
不同的编译器实现的扩容方式不一样,VS2015中以1.5倍扩容,GCC以2倍扩容。
对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了 ;(vector迭代器失效问题)。
新增元素:Vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素;
2. 为什么采用成倍的扩容方式
对比可以发现采用采用成倍方式扩容,可以保证常数的时间复杂度,而增加指定大小的容量只能达到O(n)的时间复杂度,因此,使用成倍的方式扩容。
考虑可能产生的堆空间浪费,成倍增长倍数不能太大,使用较为广泛的扩容方式有两种,以2二倍的方式扩容,或者以1.5倍的方式扩容。1.5倍的增长方式可以更好的实现对内存的重复利用,因此更好。
转载于:https://www.cnblogs.com/XZDSF/p/11362705.html
最后
以上就是朴实秋天为你收集整理的Vecotr扩容的全部内容,希望文章能够帮你解决Vecotr扩容所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复