質問

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

Iは、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 [寸法]を存在するものとする。

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.

私は、これは理にかなっていると思いますが、これはちょうど私の頭の上から出てくるされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top