C :创建1-D数组,其中包含来自3-D数组的元素

C++ : Creating 1-d array which contains the elements from 3-d array

本文关键字:数组 3-D 元素 包含 创建 1-D      更新时间:2023-10-16

我正在尝试创建包含来自3维数组的元素

的1维数组

例如:

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`

之前

有人知道这里出了什么问题吗?

此方法以前有效,但我真的很想知道现在发生的事情。

谢谢。

   // 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);

{}只能在编译时间初始化,需要保持恒定。

您需要使用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个循环并直接影响它们。

我认为您可以使用类似的东西:

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];
   }
}