2013-07-22 6 views
21

In a question about double[,] zu antworten, habe ich einen Screenshot von Ausgang des LINQPad für diese Datenstruktur:Was bedeutet double [,,]?

double[,]

aber ich habe zu fragen, was ein double[,,] aussieht und LINQPad wird es nicht für mich sichtbar zu machen. Außerdem verstehe ich nicht das Format der Daten, die darin eingehen:

int[,,] foo = new int[,,] 
    { 
    { 
     { 2, 3}, 
     { 3, 4} 
    }, 
    { 
     { 3, 4}, 
     { 1, 5} 
    } 
    }; 

Kann mir jemand dies für mich visualisieren?

+0

Ich denke, der direkteste Weg, um es zu visualisieren wäre mit einem 3D-Würfel. Ich weiß nicht, ob jemand ein kompliziertes 2D-Modell vorschlagen möchte ...? – Katana314

+0

@ Katana314, siehe http://stackoverflow.com/a/18304657/129164 für was ich denke, würde technisch gesehen ein * 1D * -Modell sein. – devuxer

Antwort

19

Sie können sich vorstellen, dass eine Reihe von Tabellen übereinander gestapelt ist. Sie müssten also ein Triplet angeben, um das Element abzurufen, das angibt, aus welcher Tabelle, Spalte und Zeile der Wert abgerufen werden soll.

Hier ist, was ein 3x3x3 Array sichtbar gemacht werden kann als:

enter image description here

+0

Und jede Box enthält eine Nummer des Eingangs? ** Bearbeiten: ** Basierend auf @ Servys Kommentar zu seiner Antwort weiß ich, dass die Antwort auf meine Frage "Ja" ist. – Bobson

+0

Korrekt. Jede Box ist eine Array-Position, die dann einen Wert enthält (ein Double, wenn Sie Ihr Beispiel verwendet haben). – PocketDews

+3

Bitte visualisieren Sie 'double [,,,,,,] auch ;-) –

8

Es ist ein 3D-Array. Sie müssen also eine 3D-Darstellung machen, um sie zu visualisieren.

Sie können sich vorstellen, einen Würfel (oder genauer gesagt einen rechteckigen Quader) mit mehreren Legosteinen zu erstellen, wobei jeder Stein 1 ganze Zahl enthält.

+3

Es ist kein Würfel, da die Dimensionen nicht alle gleich sein müssen. Es ist ein Quader. – Servy

+2

Ja, aber ich weiß jetzt nicht, ob jeder weiß, was ein Quader ist. –

+1

Wenn Sie einen anderen Begriff verwenden können, um zu repräsentieren, was Sie meinen, dann auf jeden Fall, aber zu sagen, dass es ein Würfel ist, ist nicht korrekt. – Servy

3

Das wäre ein Quader (3-dimensionales Array) - das geht so tief wie Sie möchten (dimensionsmäßig), aber die Visualisierung wird nach der 3. Dimension sehr schwierig.

Sie könnten es sich als einen Stapel von Tabellen der gegebenen Art vorstellen; Diese Analogie funktioniert rekursiv.

9

Es ist ein Rectangular Cuboid.

Es ist ein dreidimensionaler Körper mit 6 Flächen, die alle Rechtecke sind.

Sie können sich weiter vorstellen, dass Quader in eine Anzahl von Würfeln zerlegt werden und jeder dieser Würfel einen einzelnen Wert hat.

+0

Also wo ist das Paar '{2, 3}' (zum Beispiel)? Ein Paar angrenzende Würfel? Die Linie zwischen zwei Ecken? – Bobson

+0

@Bobson In Ihrem Beispiel haben Sie 8 verschiedene Werte, das ist ein 2x2x2 Würfel. '{2, 3}, {3, 4}' steht für die untere Hälfte des Würfels und '{2, 3}' steht für benachbarte Würfel (entspricht 1/4 des gesamten Würfels). – Servy

+1

Ah, das macht jetzt Sinn. – Bobson

3

Es ist 3D-Array (Array von 2D-Arrays), wie andere gesagt. Sie können this extension zur Visualisierung verwenden.

+1

Ooooh, das sieht spaßig aus. – Bobson

0

Multidimensionales Array sieht wie ein Würfel mit 6side aus und hat 3 Eigenschaftsbreite, -höhe und -tiefe, wenn Sie die Seite des 2Dimensionsarrays in Echt setzen, wenn 2darray Tiefe mehr als 1 hat, erstellen wir 3darray. Schauen Sie sich diese Article Für genau dieses Konzept. und dieser Artikel für den Einsatz in Programming

1

Es ist auch durchaus möglich, einen n-dimensionale Array in einem „geschwenkt“ Format darzustellen, wie dies:

enter image description here

Dies ist eine der einfacheren Formate Generiere und lese für ein Array mit mehr als zwei Dimensionen.

+0

Nice one. Ich möchte, dass LINQPad es auf diese Weise ausdruckt. – Bobson