1.resize()改变容器大小


2.reserve()容器大小管理


3.例子
#include <iostream>
#include<vector>
using namespace std;
int main(){
vector<int> a(5,1);
cout<<a.size()<<" "<<a.capacity()<<endl;
//5 5
//表示定义的向量的size和容量
a.resize(10);
cout<<a.size()<<" "<<a.capacity()<<endl;
//10 10
//resize会改变容器中元素的数目,同时元素的容量也增大了
a.resize(6);
cout<<a.size()<<" "<<a.capacity()<<endl;
//6 10
//resize改变元素数目,后面的元素被删除,但是不会更改容量
a.reserve(20);
cout<<a.size()<<" "<<a.capacity()<<endl;
//6 20
//reserve不改变元素数目,增大了元素的容量
a.reserve(10);
cout<<a.size()<<" "<<a.capacity()<<endl;
//6 20
//当reserve更改的小于当前容量大小时,什么也不做,容量不会发生改变。
a.reserve(3);
cout<<a.size()<<" "<<a.capacity()<<endl;
//6 20
//当reserve更改的小于当前元素数目时,什么也不做,元素数目和容量都不会发生改变。
return 0;
}
4.resize不能再次初始化
int main(){
vector<int> a;
a.resize(5,0);
for(int i=0;i<a.size();i++){
a[i]=5;
}
a.resize(5,0);
for(auto b:a)
cout<<b<<" ";
return 0;
}
//输出:
5 5 5 5 5