resize() reserve()函数的区别(vector)

resize() reserve()函数的区别

首先介绍size和capacity的含义

  • size:指的是vector包含元素的个数。size()函数可以获取size大小。
  • capacity:指的的是vector包含元素的能力,也就是在size小于capacity不会进行内存拷贝;一旦size大于capacity将会进行内存拷贝,也就是vector的扩容。capacity() 函数可以获取capacity大小。

resize()函数

  • 重新分配大小。

reserve()函数

  • 只是保证vector的空间大小(capacity)最少达到它的参数所指定的大。

当前size()为50, capacity()为100,经过以下操作:

(1) resize(10). //size() == 10; 10到49下标的元素被删除. capacity()==100,不变,没有进行内存重新分配.

(2) resize(60). //size() == 60; 50到59下标用默认构造函数填充. capacity() == 100,不变,没有进行内存重新分配.

(3) resize(60, 9999). //size() == 60; 50到59下标用9999填充. capacity() == 100,不变,没有进行内存重新分配.

(4) resize(200). //size() == 200; 50到199下载用默认构造函数填充. capacity() == 200, 自动扩容,重新分配内存.

(5) reserve(10). //size() == 50; 不变,没有元素被删除, capacity() == 100, 不变. 即reserve调用没起作用.

(6) reserve(60). //size() == 50; 元素没有变, capacity() == 100, 不变. 即reserve调用没起作用.

(7) reserve(200). //size() == 50; 元素没有变, capacity() == 200, 扩容,重新分配内存.

资料:
http://www.360doc.com/content/13/0917/13/6432946_315151308.shtml
https://www.cnblogs.com/jiu0821/p/4415829.html

posted @ 2021-01-14 10:49  小海哥哥de  阅读(297)  评论(0编辑  收藏  举报