具有负索引的3d数组-c++

3d array with negative index - c++

本文关键字:3d 数组 -c++ 索引      更新时间:2023-10-16

我需要一个支持负索引的三维数组。类似于boost::multi_array,我可以为每个维度指定边界,即:

int xMin = -5; int xMax = 7;
int yMin = 3;  int yMax = 10;
int zMin = -8; int zMax = -2;
SuperArray<float> ar;
ar.setBounds(xMin, xMax, yMin, yMax, zMin, zMax);
ar[-3][5][-5] = 1.0f;

基本上,它在3D中索引体素子空间:)有什么准备好了吗?还是我自己来创造?谢谢

为什么不直接翻译一下呢?

假设阵列大小为:

 d1 = 100
 d2 = 100
 d3 = 100
 [d1][d2][d3]
 // where index 0 = -50 and index 99 = 50
 //Pseudo code
 // x = -1; y = 2; z = 2;
 value = array[d1/2+x][d2/2 + y][d3/2 +z];

将每个维度的大小设置为Max-Min。然后,当您想要访问数组元素时,将-Min添加到每个索引中。所以对于你的尺寸,你应该声明:

float ar[12][7][6];

然后要访问您想要的元素,您需要:

ar[-3-(-5)][5-3][-5-(-8)] = 1.0f;

您应该能够编写一个隐藏所有这些转换的类(这就是Boost库正在做的)。