多维数组



我有一个3D数组

double values[30][30][30];

我有一个循环,我给数组赋值;比如:

for(int z = 0;z<30; z++)
   for (int y = 0;y<30; y++)
      for (int x = 0;x<30; x++)
        values[z][y][x] = intensity;
end

这就是我填充数组的方式。问题是,我想创建列除了强度存储另一个变量。例如,倒数第二行应该是

values[z][y][x] = intensity | distance;
我希望你能明白。我的知识有限,我想不出解决办法。谢谢你的建议。

这取决于您的数据类型。最简单的解决方案是使用struct:

struct data {
    float intensity; // or replace 'float' with whatever datatype you need
    float distance;
};

使用这个结构体,而不是你现在使用的数据类型的数组,然后设置值:

values[z][y][x].intensity = intensity;
values[z][y][x].distance = distance;

如果你只使用小值(例如每个值只对应char),你也可以使用位运算符将所有内容存储在整数中:

values[z][y][x] = intensity << 8 | distance;
intensity = values[z][y][x] >> 8;
distance = values[z][y][x] & 255;

但我不建议你这样做,除非你对这个值范围非常熟悉(例如保存位图/纹理的东西)。

相关内容

  • 没有找到相关文章

最新更新