Anfänger kann sich mehrdimensionale Arrays nicht vorstellen
-
Vielleicht stehe ich auf dem Schlauch - aber ich kann mir absolut nicht mehrdimensionale Arrays vorstellen.
Mit a[2][3] komme ich ja noch klar. Das wäre beispielsweise eine Tabelle mit 2 Spalten und jeweils 3 Zeilen:
**
**
**
(mal in Sternchen ausgedrückt
).Gut, aber a[][][]... was ist das denn hier das dritte?
Bei dreidimensionalen Objekten ist das noch die "Richtung", ok... aber sonst? Was wäre es bei Tabellen?
Und a[][][][]... wie sind denn diese Daten miteinander verknüpft und wie kann ich mir das besser vorstellen?Ich hoffe, man versteht überhaupt meine Frage :D.. aber ich bin grad echt etwas überfordert.
-
a[][][] wäre 3D. Verschiedene Tabellenblätter oder ein Hochregallager
a[][][][] wäre 4D. Verschiedene Hochregallager.
-
aaaaahh.. das bringt mich wahrlich schon sehr weiter :).
Darf ich dich noch eine Kleinigkeit fragen?Wenn ich a[][][] habe.. wie initialisiere ich das?
a[2][3] wäre klar mit {(6, 7, 8), (4, 5, 6)}.
Aber wie bringe ich den dritten Eintrag unter? Danke :).
-
aaah, ich blindfisch habe die antwort darauf gerade in meinem Arbeitsbuch entdeckt. Trotzdem vielen Dank :).
-
Menschen können sich nun mal keine 4-Dimensionalen Objekte vorstellen, damit wirst du leben müssen. Du kannst dir statt einem Schachbrettstapel (3-Dimensionen) eine Reihe von Schachbrettstapeln vorstellen und dir so deine 4. Dimension überlegen, aber das ist natürlich kein "echtes" vierdimensionales Objekt. Aber eine räumliche Vorstellung beliebig dimensionaler Objekte hat glaube ich auch wenig Wert hier, es reicht das unterliegende Prinzip zu verstehen. Alle Arrays in C++ sind letztlich eindimensional, heißt int[9] ist das gleiche wie int[3][3]. Die zusätzlichen Dimensionen sind nur eine Adressierungshilfe, der Compiler sieht bei sowas hier
int a[3][3]; void foo(size_t i, size_t j) { bar(a[i][j]); }letztlich nur das
int a[9]; void foo(size_t i, size_t j) { bar(a[i * 3 + j]); }- erweiterbar auf beliebig viele Dimensionen.
-
Ich würd mich von dem dimensionalen Denken verabschieden.
int ar[2][3]
ar ist ein Array von 'zwei Arrays mit je 3 ints'.
int ar[2][3][4]
ar ist ein Array von 'zwei Arrays mit je 3 Arrays mit 4 ints.Das x y z Denken ist doch Schmarrn. Das ist einfach ein Array von Arrays.
-
Und in wirklichkeit am besten std::array oder std::vector verwenden, bzw. gleich matrix
LG
-
Dimensionen kommen doch überall vor:
Du hast ein Legostein und findest gefallen daran, du sammelst fleissig und hast am Ende ganz viele Steinchen. Du bist ein wenig nerdig und benennst jeden einezelnen Stein; mit ner Nummer.
Die vielen herumliegenden Steine gehen dir irgendwann auf den Wecker, du fängst an sie in Kisten zu packen. Da du aber imemrnoch fleissig sammelst brauchst du mehr Kisten. Deine Nerdigkeit nach benennst du die Kisten wieder; mit ner Nummer.
Die Kisten nehmen überhand, um derer Herr zu werden mietest du Kontainer an. Nachdem der erste Kontainerr voll ist ein zweites usw. Du sammeslt aber immernoch. Also werden auch immer mehr Kontainer benötigt. Um den Überblick zu behalten gibts du jedem Kontainer eine; Nummer.
Es werden immer mehr Steine, Kontainer reichen nicht. Du brauchst Lager - Lager mit Nummern. Auch die Lager reichen nicht mehr, du brauchst Halden - Halden mit Nummern.Am Ende deines Lebens stehst du vor deinem Werk und fragst dich "Wo ist wohl mein erster Legostein". Du errinnerst dich an deine Nerdigkeit. Schaust nach und der Stein steht unter:
Es ist einfach ne Form der Organisation.
-
wenn du sie kapierst oder bzw kurz rklärt bekommst sind sie besser als arrays in c++, hab selber schon lange her eine frage über vectoren gestellt besonders üer mehrdimensionale, wie man sie definiert. array's sind veraltert in c++ vectoren sind das neue für c++ machs gleich damit sind genauer , weniger fehler etc..
guten abend