在日常生活中我们可以将若干个小容器嵌套在一个大容器中,vector也可以这么做。
1.创建容器
vector<vector<int> > v;//v的每个元素都是一个整形动态数组
//两个连续的>之间最好加空格,否则有的编译器识别不了
2.存入元素
//首先创建小容器
vector<int> v1;
vector<int> v2;
vector<int> v3;
//往小容器中存入元素
for(int i=0;i<3;i++)
{
v1.push_back(i+1);
v2.push_back(i+4);
v3.push_back(i+7);
}
//把小容器存入大容器
v.push_back(v1);
v.push_back(v2);
v.push_back(v3);
3.遍历输出
for(vector<vector<int> >::iterator it=v.begin();it!=v.end();it++)
{
//(*it)是个vector<int>型的小容器
//故要再创建相应的迭代器才能访问其中元素
for(vector<int>::iterator vit=(*it).begin();vit!=(*it).end();vit++)
cout<<*vit<<" ";
cout<<endl;
}
另外vector容器嵌套也可以用二维数组的下标方式进行访问,不过必须要初始化一维数组的数量,示例代码如下:
//每个一维数组初始化为3个'\0'
vector<vector<char> > vc(3,vector<char>(3,'\0'));
//回顾之前vector构造函数内容,也可以用拷贝构造函数,区间拷贝构造函数
//如果想要每行元素个数不同,可以这样写
//vector<vector<int> > V(自定义行数,vector<int>());
//for(int i=0;i<自定义行数;i++)
// V[i].resize(自定义每行元素个数);
//存入元素
for(int i=0;i<3;i++)
{
vc[0][i]='A'+i;
vc[1][i]='D'+i;
vc[2][i]='G'+i;
}
//遍历元素
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
cout<<vc[i][j]<<" ";
cout<<endl;
}
最后附上代码执行结果: