2013-07-22 22 views
21

Nel rispondere a question about double[,], ho aggiunto uno screenshot della produzione di LINQPad per quella struttura di dati:Cosa rappresenta il doppio [,,]?

double[,]

Tuttavia, ho avuto modo di chiedersi cosa un double[,,] assomiglia, e LINQPad non si visualizza per me. Inoltre, non capisco il formato dei dati che contiene:

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

Qualcuno può visualizzare questo per me?

+0

Penso che il modo più diretto per visualizzarlo sarebbe con un cubo 3D. Non so se qualcuno vuole suggerire un complicato modello 2D ...? – Katana314

+0

@ Katana314, vedere http://stackoverflow.com/a/18304657/129164 per quello che penso sarebbe tecnicamente considerato un modello * 1D *. – devuxer

risposta

19

Si può pensare che questo abbia una serie di tabelle impilate l'una sull'altra. Quindi è necessario specificare una terzina per recuperare l'elemento, che dovrebbe specificare da quale tabella, colonna e riga ottenere il valore.

Ecco cosa una matrice 3x3x3 può essere visualizzato come:

enter image description here

+0

E ogni casella contiene un numero di input? ** Modifica: ** Sulla base del commento di @ Servy sulla sua risposta, so che la risposta alla mia domanda è "Sì". – Bobson

+0

corretto. Ogni casella è una posizione di matrice, che quindi terrebbe un valore (un doppio se hai usato il tuo esempio). – PocketDews

+3

Si prega di visualizzare anche 'double [,,,,,,' ;-) –

8

È un array 3D. Quindi devi fare una rappresentazione 3D per visualizzarla.

Si può pensare di creare un cubo (o più correttamente un parallelepipedo rettangolare) con più mattoncini Lego in cui ogni mattone contiene 1 intero.

+3

Non è un cubo, poiché non tutte le dimensioni devono essere uguali. È un cuboide. – Servy

+2

Sì, ma non lo so ora se tutti sanno cos'è un parallelepipedo. –

+1

Se puoi usare un altro termine per rappresentare ciò che intendi, allora con tutti i mezzi, ma dire che è un cubo non è corretto. – Servy

3

Quello sarebbe un cuboide (matrice tridimensionale) - questo è profondo quanto vuoi (dimensione saggio), ma la visualizzazione diventa davvero difficile dopo la terza dimensione.

Si potrebbe immaginare come una pila di tavoli del tipo dato; quell'analogia funziona in modo ricorsivo.

9

È un Rectangular Cuboid.

È un solido tridimensionale con 6 volti, tutti rettangoli.

È inoltre possibile immaginare che il cuboide venga suddiviso in un numero di cubi e ognuno di questi cubi abbia un singolo valore.

+0

Quindi dov'è la coppia '{2, 3}' (per esempio)? Un paio di cubi adiacenti? La linea tra due angoli? – Bobson

+0

@Bobson Nel tuo esempio hai 8 valori diversi, che è un cubo 2x2x2. '{2, 3}, {3, 4}' rappresenta la metà inferiore del cubo e '{2, 3}' rappresenta i cubi adiacenti (che costituiscono 1/4 dell'intero cubo). – Servy

+1

Ah, questo ha senso ora. – Bobson

3

È matrice 3D (array di array 2D) come altri hanno detto. È possibile utilizzare this extension per la visualizzazione.

+1

Ooooh, sembra divertente con cui giocare. – Bobson

0

L'array multidimensionale assomiglia ad un cubo con 6 lati e ha 3 proprietà larghezza, altezza e profondità, quando si diminuisce la profondità si mette la pagina dell'array 2dimension in reale quando l'array 2d ha profondità più di 1 creiamo array 3d. guarda questo Article Per conoscere a fondo questo concetto. e questo articolo per uso in Programming

1

È anche abbastanza possibile rappresentare un array n-dimensionale in un formato "imperniata", come questa:

enter image description here

Questo è uno dei formati più facile generare e leggere per un array con più di due dimensioni.

+0

Bello. Vorrei che LINQPad lo stampasse in questo modo. – Bobson

Problemi correlati