8

[x + y * width]を線形インデックスとして使用して、線形配列で2次元配列をシミュレートする方法を知っています。多次元配列の線形シミュレーション

これを3dアレイに拡張することができます:[x + y * width + z * width * height]

N次元配列の一般的な式はありますか?

私は言語にとらわれない答えを探しています。

答えて

7

ちょうどあなたの例を拡張することは言い換えればx + y*width + z*width*height + w*width*height*depth + ...

を与えるあなたは、いくつかのコードをしたい場合は、dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

1

えは、... :-) Cは、十分屋言語に依存しないのですか?

入力を想定:位置[ディメンション]

は、テーブルは、テーブルの各次元の最大境界を含まmaxBound [寸法]を存在すると仮定する。

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. 

これは意味をなさないと思いますが、これはちょうど私の頭の上から出ています。