我正在尝试创建包含三维数组元素的一维数组
例如:
float array[4][3][6];
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 6; k++) {
temp[4] = {array[0][j][k],array[1][j][k],array[2][j][k],array[3][j][k]};
}
}
然而,当我编译代码时,它返回了第4行的错误:error: expected primary-expression before ‘{’ token
和error: expected
;'在'{'token`之前
有谁知道这里出了什么问题?
此方法之前有效,但我真的很难过现在发生的事情。
谢谢。
答案 0 :(得分:1)
// create 1d array with 3d property's
float array[width * height * depth];
// get and set functions
float get(int x,int y,int z)
{
return array[x + (y * width)+ (z * width * height)];
}
void set(float value,int x,int y,int z)
{
array[x + (y * width)+ (z * width * height)] = value;
}
//iterate over the array
for(int z = 0; z < depth; ++z)
for(int y = 0; y < height; ++y)
for(int x = 0; x < width ; ++x)
get(x,y,z);
答案 1 :(得分:0)
{}
只能在编译时用于初始化,需要保持不变。
您需要使用float temp[4];
,然后在循环中使用
temp[0] = array[0][j][k]
temp[1] = array[1][j][k]
temp[2] = array[2][j][k]
temp[3] = array[3][j][k]
这将使你的代码编译,但你知道最后,只有你的3-d数组的4个组件将保留,那些将是
array[0][2][5],array[1][2][5],array[2][2][5],array[3][2][5]
除非您没有显示所有代码,否则您也可以跳过2个循环并直接影响它们。
答案 2 :(得分:0)
我认为你可以使用这样的东西:
float array[4][3][6];
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 6; k++) {
for (int i=0; i < 4; i++ )
temp[i] = array[i][j][k];
}
}