1. resize的用法
改变当前容器内含有元素的数量(size())比如:
cpp
vector<int> vct;
int num = vct.size();//之前的元素个数为num
vct.resize(len);//现在的元素个数为len
如果num < len ,那么容器vct新增len - num个元素,元素的值默认为0;
若再对vct进行插入,如:
cpp
vct.push_back(1);//此时将1插入到vct末尾,其下标就为len,容器的容量变为len +1
2. reserve的用法
改变当前容器的最大容量(capacity),不会生成元素,只是确认这个容器允许放入多少对象,如果reserve(len)的值大于当前的capacity(),那么会重新分配一块能存len个元素的空间,然后把之前的vct.size()个元素通过copy construtor复制过来,销毁之前的内存。
3. 代码实现
cpp
#include<iostream>
#include<vector>
using namespace;
int mian(){
vector<int> vct;
vct.reserve(100);
vct.resize(50);
cout << vct.size() << " " << vct.capacity() << endl;//50 100
vct.reserve(150);
cout << vct.size() << " " << vct.capacity() << endl;//50 150
vct.resize(100);
cout << vct.size() << " " << vct.capacity() << endl;//100 150
vct.reserve(50);
cout << vct.size() << " " << vct.capacity() << endl;//100 150
return 0;
}
发现在进行了vct.reserve(150)之后,再将reserve()参数设置为比150小的,不发生变化,说明如果新的容量比原来的容量小,reserve()函数不会做任何事情。