我在尝试填充多维数组 m[4][4][3][3] 时遇到问题。 这些实际上是我已经知道的 16 个 3x3 矩阵,我正在尝试填充它们。这样做的正确方法是什么?我收到一个错误:“16:'{' 标记之前的预期主表达式”
请帮忙。
#include<iostream>
using namespace std;
int main()
{
int m[4][4][3][3];//0,1,2,3 HLUT
m[0][0]={1,0,1,
1,1,1,
1,0,1};
m[0][1]={1,1,1,
0,1,0,
1,1,1};
m[0][2]={1,0,1,
1,1,1,
1,0,1};
m[0][3]={1,1,1,
0,1,0,
1,1,1};
m[1][0]={1,0,0,
1,0,0,
1,1,1};
m[1][1]={0,0,1,
0,0,1,
1,1,1};
m[1][2]={1,1,1,
0,0,1,
0,0,1};
m[1][3]={1,1,1,
1,0,0,
1,0,0};
m[2][0]={1,0,1,
1,0,1,
1,1,1};
m[2][1]={1,1,1,
0,0,1,
1,1,1};
m[2][2]={1,1,1,
1,0,1,
1,0,1};
m[2][3]={1,1,1,
1,0,0,
1,1,1};
m[3][0]={1,1,1,
0,1,0,
0,1,0};
m[3][1]={1,0,0,
1,1,1,
1,0,0};
m[3][2]={0,1,0,
0,1,0,
1,1,1};
m[3][3]={0,0,1,
1,1,1,
0,0,1};
}
最佳答案
你不能像那样初始化一个多维数组。如果你想这样做,请这样做:
#include<iostream>
using namespace std;
int main()
{
int m[4][4][3][3] = {1,0,1, //1
1,1,1,
1,0,1,
1,1,1, //2
0,1,0,
1,1,1,
1,0,1, //3
1,1,1,
1,0,1,
// ...
// ...
1,0,1, //16
1,1,1,
1,0,1};
for(int i=0;i<4;++i)
for(int j=0;j<4;++j) {
for(int p=0;p<3;++p) {
for(int q=0;q<3;++q)
std::cout<<m[i][j][p][q];
std::cout<<std::endl;
}
std::cout<<std::endl;
}
}
或者使用 4 个 for
循环来分配你的数组。您必须始终记住,多维数组只不过是内存中的一维数组,因此将其初始化为一维数组。
关于c++ - 如何在 C++ 中填充多维数组的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886291/