Beginnen wir also mit den Unterschieden zwischen Ein-Dimension und Zwei-Dimension-Array und einer Vergleichstabelle.
Vergleichstabelle:
Vergleichsgrundlage | Eindimensional | Zweidimensional |
---|---|---|
Basic | Speichern Sie eine einzelne Liste von Elementen mit ähnlichem Datentyp. | Speichern Sie 'Listen von Listen' oder 'Arrays von Arrays' oder 'Arrays von eindimensionalen Arrays'. |
Erklärung | / * Deklaration in C ++ Typ Variablenname [Größe]; * / / * Deklaration in Java Typ Variablenname []; Variablenname = neuer Typ [Größe]; * / | / * Deklaration in C ++ Typ Variablenname [Größe1] [Größe2]; * / / * Deklaration in Java Typ variablenname = new int [size1] [size2]; * / |
Alternative Erklärung | / * In Java int [] a = new int [10]; * / | / * In Java int [] [] a = new int [10] [20]; * / |
Gesamtgröße in Bytes | Gesamtbytes = sizeof (Datentyp der Array-Variablen) * Größe des Arrays. | Gesamtbytes = sizeof (Datentyp der Array-Variablen) * Größe des ersten Index * Größe des zweiten Index. |
Empfangsparameter | Es kann in einem Zeiger, einem Array mit einer Größe oder einem Array mit einer nicht großen Größe empfangen werden. | Der empfangende Parameter muss die äußerste rechte Dimension eines Arrays definieren. |
Maße | Eindimensional | Zweidimensional |
Definition eines eindimensionalen Arrays (1-D-Array)
Eindimensionales oder eindimensionales Array wird als "Liste von Variablen ähnlicher Datentypen" betrachtet, und auf jede Variable kann separat zugegriffen werden, indem der Index in eckigen Klammern angegeben wird, denen der Name dieses Arrays vorangestellt ist.
Lassen Sie uns im C ++ - Kontext diskutieren
// Deklaration in C ++ Typ Variablenname [Größe];
Hier deklariert type den Datentyp der Array-Variablen und size die Anzahl der Elemente, die das Array aufnehmen soll.
Zum Beispiel, wenn wir ein Array deklarieren wollen, das den Saldo jedes Monats des Jahres enthält.
// example int month_balance [12];
Month _balance ist die Array-Variable, die die 12 ganzen Zahlen enthält, die den Saldo jedes Monats darstellen. Wenn wir nun auf den Kontostand des Monats 'April' zugreifen möchten, müssen wir lediglich den Variablennamen gefolgt von der eckigen Klammer mit dem Indexwert für den Monat April angeben, dh 'month_balance [3]'. Da 'April' jedoch der vierte Monat des Jahres ist, hatten wir '[3]' erwähnt, weil alle Arrays 0 als Index ihres ersten Elements haben.
In Java kann dies als gemacht werden
// Deklaration in Java Typ Variablenname []; Variablenname = neuer Typ [Größe];
Hier hatten wir anfangs eine Array-Variable mit ihrem Typ deklariert und dann mit 'new' Speicher reserviert und der deklarierten Array-Variable 'new' zugewiesen. Nehmen wir das obige Beispiel, wenn wir ein Array deklarieren wollen, das den Saldo in jedem Monat des Jahres enthält.
// example int month_balance []; month_balance = new int [12];
Hier ordnet 'new' der Array-Variablen "month_balance" Speicher zu, sodass nun mont_balance nun den Speicher für 12 Ganzzahlen enthält.
Arrays können bei der Deklaration initialisiert werden. Ein Array-Initialisierer ist eine Liste von durch Kommas getrennten Werten, die von geschweiften Klammern umgeben sind.
//Beispiel
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definition eines zweidimensionalen Arrays (2-D-Array)
Sowohl C ++ als auch Java unterstützen ein mehrdimensionales Array. Eine der einfachsten Formen eines mehrdimensionalen Arrays ist ein zweidimensionales Array oder ein 2D-Array. Ein zweidimensionales Array kann als 'Array von Arrays' oder 'Array von eindimensionalen Arrays' betrachtet werden. Um die zweidimensionale Arrayvariable zu deklarieren, müssen Sie den Arraynamen gefolgt von zwei eckigen Klammern angeben, wobei der zweite Index der zweite Satz von eckigen Klammern ist.
Ein zweidimensionales Array wird in Form der Zeilen-Spalten-Matrix gespeichert, wobei der erste Index die Zeile und der zweite Index die Spalte angibt. Der zweite oder ganz rechte Index eines Arrays ändert sich beim Zugriff auf die Elemente eines Arrays sehr schnell im Vergleich zum ersten oder ganz linken Index.
// Deklaration in C ++ Typ Variablenname [Größe1] [Größe2];
Zum Beispiel möchten wir den Saldo aller 30 Tage in jedem Monat des Jahres in einem 2D-Array speichern.
// Beispiel int month_balance [12] [30];
In Java erhält man das zweidimensionale Array mit
// Deklaration in Java type variablenname = neu int [size1] [size2]; // Beispiel int month_balance = new int [12] [30];
Da wir das gesamte Array nicht als Parameter an eine Funktion übergeben können, wird ein Zeiger auf das erste Element des Arrays übergeben. Ein Argument, das das zweidimensionale Array empfängt, muss die Dimension ganz rechts definieren. Die Dimension ganz rechts ist erforderlich, da der Compiler sie benötigt, um die Länge jeder Zeile zu überprüfen, wenn das Array korrekt indiziert werden soll. Wenn der Index ganz rechts nicht erwähnt wird, kann der Compiler nicht bestimmen, wo die nächste Zeile beginnt.
// Beispiel in Java void receive_funct (int a [] [10]) {. . . }
Wenn der Speicher dynamisch dem zweidimensionalen Array in Java zugewiesen wird, wird der Index ganz links angegeben, und die verbleibenden Dimensionen können separat zugewiesen werden, dh alle Zeilen des Arrays sind möglicherweise nicht gleich groß.
// Beispiel in Java int month_balance = new int [12] []; month_balance [0] = new int [31]; month_balance [1] = new int [28]; month_balance [2] = new int [31]; month_balance [3] = new int [30]; month_balance [4] = new int [31]; month_balance [5] = new int [30]; month_balance [6] = new int [31]; month_balance [7] = new int [30]; month_balance [8] = new int [31]; month_balance [9] = new int [30]; month_balance [10] = new int [31]; month_balance [11] = new int [30]; month_balance [12] = new int [31];
Dies hat jedoch keinen Vorteil.
Hauptunterschiede zwischen eindimensionalem und zweidimensionalem Array
- Das eindimensionale Array ist eine Liste, deren Elemente einen ähnlichen Datentyp haben. Auf der anderen Seite ist das zweidimensionale Array eine Liste, deren Elemente ein Array mit einem ähnlichen Datentyp sind.
- Wenn in C ++ das eindimensionale Array vom Parameter einer Empfangsfunktion empfangen wird, ist es nicht erforderlich, die Größe des Arrays zu erwähnen, da der Compiler erkennt, dass das Array des Typs (der erwähnte Datentyp zusammen mit dem Parameter) eine gewisse Länge hat ist zu erhalten. In einem zweidimensionalen Array muss der zweit- oder ganz rechts liegende Index angegeben werden, da der Compiler wissen muss, wo eine einzelne Zeile endet und eine neue Zeile beginnt.
- In C ++ wird das eindimensionale Array in einer zusammenhängenden Speicherstelle in der indizierten Reihenfolge gespeichert, wohingegen das zweidimensionale Array auch in der zusammenhängenden Speicherstelle gespeichert wird. Da sich jedoch in einem zweidimensionalen Array mehrere Zeilen befinden, erfolgt die Speicherung von einer ersten Reihe folgt eine zweite und die dritte und so weiter.
Hinweis:
Das Übergeben von sowohl einem eindimensionalen Array als auch einem zweidimensionalen Array an eine Funktion ist ähnlich, dh beide werden nur durch den Namen des Arrays übergeben
// Beispiel pass_funt (name_of_array);
Fazit:
In eindimensionalen und zweidimensionalen Arrays spielt der Index eine sehr wichtige Rolle, da nur er ein Element im Array spezifisch identifiziert. Ein eindimensionales und ein zweidimensionales Array können zum Zeitpunkt ihrer Deklaration initialisiert werden.