繁体   English   中英

C ++多维数组

[英]C++ Multidimensional array

我有一个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 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;

但是我不建议您这样做,除非您真的很了解该值范围(例如,用于保存位图/纹理的东西)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM