[x + y * width]
我知道如何使用线性索引来模拟线性数组中的二维数组。
我可以将其扩展到 3d 数组:[x + y * width + z * width * height]
.
N维数组有通用公式吗?
我正在寻找与语言无关的答案。
[x + y * width]
我知道如何使用线性索引来模拟线性数组中的二维数组。
我可以将其扩展到 3d 数组:[x + y * width + z * width * height]
.
N维数组有通用公式吗?
我正在寻找与语言无关的答案。
当然。只需扩展您的示例即可x + y*width + z*width*height + w*width*height*depth + ...
换句话说,dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...
嗯,如果你想要一些代码... :-) C 语言已经足够独立了,是吗?
假设输入:位置[维度]
假设存在一个表 maxBound[dimensions] 包含表的每个维度的最大边界。
int index = 0;
int multiplier = 1;
for (int i = 0;i < dimensions;i++)
{
index += location[i] * multiplier;
multiplier *= maxBound[i];
}
您的索引将最终出现在索引字段中。
Test:
location = [3,4,5]
maxBound = [10,20,30]
loop initial: index = 0, multiplier = 1.
loop i=0: index = 3, multiplier = 10.
loop i=1: index = 43, multiplier = 200.
loop i=2: index = 1043, multipler = 6000.
我认为这是有道理的,但这只是我的想法。