C++ vector 动态增长详解

2020-05-24  本文已影响0人  pluto_S

内存增长相关的四个函数

size()、capacity()、reserve()、resize()

vector内存动态增长过程

内存增长是编译器自动完成的。包括重新分配内存空间拷贝原空间释放原空间三个过程。
具体策略为当添加元素时,如果vector空间大小不足,则会以原大小的1.5倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间。
也就是说vector的空间动态增加大小,并不是在原空间之后的相邻地址增加新空间,因为vector的空间是线性连续分配的,不能保证原空间之后有可供配置的空间。

这个动态增长过程会降低程序效率,因此可以使用reserve进行预分配空间来提高程序使用效率

上一篇下一篇

猜你喜欢

热点阅读