C++STL容器vector的resize() 与reserve

vector中的两个概念:

  1. size

    size是当前vector容器真实占用的大小,也就是容器当前拥有多少个容器。对应方法resize()。

  2. capacity

    capacity是指在发生realloc前能允许的最大元素数,即预分配的内存空间。对应方法reserve()。

resize()与reserve()

vector<type>array;

使用resize(),容器内的对象内存空间是真正存在的(系统默认值),不同的类型初始化为该类型的默认值,可以通过数组索引的方式赋值。使用push_back增加一个元素后,容器的size会增加1,预分配的内存空间capacity也会增加。

使用reserve()仅仅只是修改了capacity的值,容器内的对象并没有真实的内存空间(空间是”野”的),size为0。此时切记使用[]操作符访问容器内的对象,很可能出现数组越界的问题。使用push_back添加一个元素后,size加1,在size小于capacity时,capacity不变。当size大于capacity时,capacity也会增加。

猜你喜欢

转载自blog.csdn.net/u014571489/article/details/81483250