vector容器中resize()与reserve()的区别及用法

前言

1、vector容器关于容量具备两个属性:①size 容器中的现有元素个数 ②capacity 容器最大容量,这两个属性通过对应成员函数调用查看;
2、resize()函数与reserve()函数是vector容器的公有成员函数,加.调用。

一、resize()函数使用

1、实质:resize()函数实质是改变vector中的元素个数;
2、参数:resize()含有两个参数,resize(n, m); 参数n表示vector中元素个数n,参数 m表示初始化,其中参数m可省略。

resize(n,m)使用有3种情况:

初始化一vector容器,vector v;
1、参数n < v.size()时,结果是容器v的size减小到n,删除n之后的元素;
2、v.size() < 参数n < v.capacity(),结果是容器v的size增加到n,增加的元素值初始化为m,m省略时,增加元素值为缺省值,即默认值;
3、v.capacity() < 参数n,结果是先增大容量capacity至n,然后初始化值,初始化方法与情况2相同,此时v中的size与capacity均发生改变。

resize()常用情形

1、需要对容器中现有元素进行操作时;
2、容器初始化之后,使用容器时。

二、reserve()函数使用

1、实质:reserve()函数实质是改变vector的容量,即总空间的大小;
2、参数:reserve(n),只含有一个参数,表示总空间的大小。

reserve(n)使用有2种情况:

初始化一vector容器,vector v; v.reserve(100);
1、参数n < v.capacity()时,size与capacity均不发生改变;
2、参数n > v.capacity()时,此时会重新分配一块空间,使得capacity扩容至n,size不发生改变

reserve()常用情形

常用来容器初始化,预留容器空间,以免之后多次动态改变容器空间。
也可以在程序中间调用以扩大容器的空间.
注意: reserve只能扩大容器的空间,并不能减小容器的空间

//eg:
vector v;      
v.reserve(100);  //预留100个元素的内存空间
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐