array 与 array 嵌套
等效创建一个二维数组 int array[4][3],array 里面存的还是 array
存的是这样的数据类型 array<int,3>,有 4 行 3 列的 array<int,3> 数组
void testArrayVsArray() {
array<array<int, 3>, 4> arrData; //int arrData[4][3]
for (int i = 0; i < 4; i++) //与二维数组一样,循环嵌套去用即可(4行3列)
{
for (int j = 0; j < 3; j++)
{
arrData[i][j] = i * j;
cout << arrData[i][j] << "\t";
}
cout << endl;
}
}
int main() {
testArrayVsArray();
}
/*输出*/
0 0 0
0 1 2
0 2 4
0 3 6
vector 与 vector 嵌套
也是一个二维数组,只能创建没有带长度的
vector 数组可以出现行、列数不等的情况
void testVectorVsVector()
{
srand((unsigned int)time(nullptr)); //设置随机函数种子
vector<vector<int>> vecData;
//一般vecotor 采用的是 push_back 的方式插入
for (int i = 0; i < 4; i++)
{
//准备中间变量再做插入
vector<int> temp;
//rand()%3 [0,2] [2,4]
for (int j = 0; j < rand() % 3 + 2; j++)
{
temp.push_back(i * j); //把i*j插入vector
}
//插入的是容器
vecData.push_back(temp);
}
//打印不等列数的二维数组
for (int i = 0; i < vecData.size(); i++)
{
for (int j = 0; j < vecData[i].size(); j++)
{
cout << vecData[i][j] << "\t"; //知道长度,可以用下标法去操作
}
cout << endl;
}
}
int main() {
testVectorVsVector();
}
/*输出*/
0 0 0 0
0 1
0 2 4
0 3 6 9
0 0 0
0 1
0 2
0 3 6 9
array 与 vector 嵌套
void testArrayVsVector()
{
//array中装vector
array<vector<int>, 3> vecArr;
//先准备3个vector,创建vector数组
vector<int> vec1[3] = { { 1,2,3 } , {1,2,3,4}, {1,2}};
//插入元素
for (int i = 0; i < vecArr.size(); i++)
{
vecArr[i] = vec1[i];
}
//打印不等列数的二维数组
for (int i = 0; i < vecArr.size(); i++)
{
for (int j = 0; j < vecArr[i].size(); j++)
{
cout << vecArr[i][j] << "\t";
}
cout << endl;
}
}
int main()
{
testArrayVsVector();
}
/*输出*/
1 2 3
1 2 3 4
1 2
vector与 array 嵌套
void testVectorVsArray()
{
vector<array<int, 3>> arrVec;
array<int, 3> arr[3] = { { 1,2,3 } , {1,2,3}, {1,2,3}}; //准备3个定长数组
for (int i = 0; i < 3; i++)
{
arrVec.push_back(arr[i]); //一个个插入即可
}
for (int i = 0; i < arrVec.size(); i++)
{
for (int j = 0; j < arrVec[i].size(); j++)
{
cout << arrVec[i][j] << "\t";
}
cout << endl;
}
}
int main()
{
testVectorVsArray();
return 0;
}
/*输出*/
1 2 3
1 2 3
1 2 3
拓展
vector<array<array<vector<int>, 3>, 3>> vec;
//慢慢剥洋葱即可
array<array<vector<int>, 3>, 3> test;
for (int i = 0; i < 3; i++)
{
test[i] = vecArr; //vecArr: array<vector<int>,3>用上面array与vector嵌套准备的
}
vec.push_back(test);