问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
vector 扩容机制是怎么回事,能简单说说原理吗
我想要达到的结果
vector 扩容机制是怎么回事,能简单说说原理吗
vector 扩容机制是怎么回事,能简单说说原理吗
vector 扩容机制是怎么回事,能简单说说原理吗
在vector类中作用为在vector尾部加入一个数据;即vector的size属性加1,但此时还要判断 (size+1)与capacity的关系,如果(size+1)>capacity,则说明集合已经满了,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,再插入新增的元素;
对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了 ;
初始时刻vector的capacity为0,塞入第一个元素后capacity增加为1;
不同的编译器实现的扩容方式不一样,VS2015中以1.5倍扩容,GCC以2倍扩容。
问题:为什么要成倍的扩容而不是一次增加一个固定大小的容量呢?为什么是以两倍的方式扩容呢??
答:成倍扩展是为了保证常数时间的复杂度,以2倍方式扩容是为了防止内存的浪费,更好的实现对内存的利用。