Zweidimensionales Array
-
Hey Leute,
ich habe nur eine kurze Frage und finde im Internet wiedersprüchliche Antworten dazu.
Wenn ich ein zweidimensionales Array Deklariere was kommt zuerst? Die Zeile oder die Spalte?
z.b.:int A[zeile][spalte]; oder; int A[spalte][zeile]; ?
Viele Grüße
Criseas
-
int A[zeile][spalte]
-
Was für einen Unterschied macht das? Was du Zeile oder Spalte nennst ist völlig willkürlich.
Das einzige was du wir merken solltest:
1. Beim Iterieren die hintersten Indizes in der innersten Schleife
2. 2D Arrays möglichst meiden
-
Hallo Criseas,
Das ist eigentlich egal. Du musst nur das iterieren entsprechend machen.
Ich vermute mal die meisten Leute würden a[zeile][spalte] bevorzugen.
Etwas anderes ist es natürlich wenn Bibliotheksfunktionen ein Array verlangen, dann musst Du Dich natürlich an die Anforderungen der Bibliothek halten.
Herzliche Grüsse
Walter
-
Okey vielen dank, das hilft mir schon weiter:)!
-
Ein Blick auf Boost - Multiarray wäre vielleicht nicht schlecht. Ich mag rohe multiarrays nicht ^^
-
Ich finde boost multi_array etwas unkomfortabel, gerade bei 2D Arrays kann man durch Kapselung eines vektors und Implementation von ein paar Methoden schon mit wenig Aufwand was Brauchbares schaffen.
-
@DocShoe: Klar, mit Vektoren geht das sehr gut, aber was findest du an boost::multi_array unkomfortabel?
#include "boost/multi_array.hpp" using namespace boost; int main() { typedef multi_array<int, 2> TArray; typedef TArray::index Tindex; TArray array( extents[3][3] ); array [1][2] = 42; return 0; }Gruß
Dobi
-
Schon allein 2 typedefs in 4 Zeilen Code. Gut, ginge auch ohne, aber dass der Konstruktor ein extents Objekt braucht, um zu wissen, wie groß das Arrays sein soll ist schon nicht mehr intuitiv.
Wie gesagt, wenn ich ein 2D Array für triviale Datenhaltung brauche würde ich wirklich eine eigene Klasse schreiben, aber sobald ich sub-arrays oder stencil Funktionalität brauche würde ich auch boost multiarray benutzen.
-
Ja ist etwas umständlich. Ich benutze dann aber trotzdem lieber eine externe lib, die ausreichend getestet wurde bevor ich selber sowas code. Aber ja, jedem das sein
