今天来学习vector容器的容量和大小方面的操作,主要有以下几个函数原型:
empty();//判断容器是否为空
capacity();//获取容器的容量
size();//返回容器中元素的个数
resize(int num);//重新指定容器的长度为num,若容器边长,则以默认值填充新位置
//若容器变短,则末尾超出容器长度的元素被删除
resize(int num,elem);//重新指定容器的长度为num,若容器边长,则以elem值填充
//新位置
//若容器变短,则末尾超出容器长度的元素被删除
接下来构造场景示范这些函数的使用:
#include <iostream>
#include <vector>
using namespace std;
void outVector(vector<int> &vec)//方便查看数组元素
{
for(vector<int>::iterator it=vec.begin();it!=vec.end();it++)
cout<<*it<<" ";
cout<<endl;
}
void test()//创造测试环境
{
vector<int> v;//先判断v是否为空
if(v.empty()){
cout<<"v为空"<<endl;//此时应为空
}
else cout<<"v不为空"<<endl;
for(int i=0;i<10;i++)//于是填充v
v.push_back(i+1);
if(v.empty()){ //判断v是否为空
cout<<"v为空"<<endl;
}
else cout<<"v不为空"<<endl;//此时应不为空
cout<<"v初态:"<<endl;//打印此时v的各种数据
outVector(v);//元素一览,应为1 2 ... 10
cout<<"v的容量:"<<v.capacity()<<endl;//看看容量,应大于等于10
cout<<"v的大小:"<<v.size()<<endl;//看看大小,应为10
v.resize(7);
cout<<"调用resize,使容器变短"<<endl;
outVector(v);//应为1 2 ... 7
cout<<"v的容量:"<<v.capacity()<<endl;//得出结论:容器变短容量不变
cout<<"v的大小:"<<v.size()<<endl;//应为7
v.resize(12);
cout<<"调用resize(int num),使容器变长"<<endl;
outVector(v);//应为1 2 ... 7 0 0 0 0 0
cout<<"v的容量:"<<v.capacity()<<endl;//得出结论:容器变长容量可能不变
cout<<"v的大小:"<<v.size()<<endl;//应为12
v.resize(17,3);
cout<<"调用resize(int num,elem),使容器变长"<<endl;
outVector(v);//应为1 2 ... 7 0 0 0 0 0 3 3 3 3 3
cout<<"v的容量:"<<v.capacity()<<endl;//得出结论:容器变长容量可能变大
cout<<"v的大小:"<<v.size()<<endl;//应为17
}
int main()
{
test();
return 0;
}
运行结果:
总结:
数值型元素默认值一般为0。(把vector改为vector可验证)
当resize改变容器的大小不超过当前容器的容量,容器容量不变,反之则按其内部规则动态扩增容量。