2016-03-24 8 views
0

Ich habe eine dynamische Doppel-Array mit 3 Dimensionen z.Speichern mehrdimensionalen dynamischen Array

customArray : array of array of array of double 

Im Programm I die Länge jeder Dimension getrennt eingestellt (nicht rechteckige Anordnung) und verändern, wenn es gebraucht wird.

Ich frage mich, ob die Anordnung in einem kompakten Speicherabschnitt gespeichert ist, so dass es in einem Strom auf einmal, es zu retten wie writebuffer(customArray,sizeof(customArray)) und später wieder laden zum gleichen dynamischen Array wie readbuffer(customArray, savedSize);

ist das möglich?

+0

Jede Dimension befindet sich in einem zusammenhängenden Speicherblock. Die Abmessungen sind spärlich. –

Antwort

4

Dies ist eigentlich kein mehrdimensionales Array. Dies ist, was als jagged array bekannt ist. Die innerste Dimension ist zusammenhängend, aber die äußeren Dimensionen sind Arrays von Zeigern.

So werden die Elemente nicht zusammenhängend gespeichert. Wenn Sie sie zusammenhängend in eine Datei schreiben möchten, müssen Sie dies durch Schleifen über jede Dimension arrangieren.

In Pseudo-Code, wäre:

for i 
    for j 
    for k 
     write(arr[i,j,k]); 

Da die innerste Dimension benachbart ist dies geschrieben werden könnte als:

for i 
    for j 
    write(arr[i,j]); 

A gezackten Anordnungs-Element Arrays von unterschiedlicher Länge haben kann, aber wahrscheinlich dass Ihr Array alle gleich lang ist.