我有一个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;
但我不建议你这样做,除非你对这个值范围非常熟悉(例如保存位图/纹理的东西)。