Frage

Ich weiß, wie ein 2D-Array in einer linearen Anordnung simulieren mit [x + y * width] als linearem Index.

Ich kann dies auf 3D-Arrays erweitern: [x + y * width + z * width * height]

.

Gibt es eine allgemeine Formel für N-dimensionale Array?

Ich suche nach einer sprachunabhängig Antwort.

War es hilfreich?

Lösung

Klar. Nur Ihr Beispiel erstreckt gibt x + y*width + z*width*height + w*width*height*depth + ...

Mit anderen Worten, dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

Andere Tipps

Wie, wenn Sie einen Code wollen ... :-) C ist sprachunabhängig genug, ya?

Angenommen Eingang: Ort [Dimensionen]

Nehmen wir eine Tabelle maxBound [Abmessungen] vorhanden ist, dass die maximalen Grenzen jeder Dimension der Tabelle enthält.

int index = 0;
int multiplier = 1;
for (int i = 0;i < dimensions;i++)
{
  index += location[i] * multiplier;
  multiplier *= maxBound[i];
}

Ihr Index wird in dem Indexfeld enden.

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.

Ich denke, das macht Sinn, aber das nur kommt aus der Spitze von meinem Kopf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top