logo

Mehrdimensionales C++-Array

Ein Array ist eine Art Datenstruktur, die zum Speichern der Sammlung von Elementen desselben Datentyps verwendet wird, die an zusammenhängenden Speicherorten gespeichert sind. Arrays können eindimensional oder mehrdimensional sein, basierend auf der Anzahl der Richtungen, in die das Array wachsen kann. In diesem Artikel werden wir mehrdimensionale Arrays wie zweidimensionale Arrays und dreidimensionale Arrays untersuchen.

Was ist ein mehrdimensionales Array in C++?

Ein mehrdimensionales Array ist ein Array mit mehr als einer Dimension. Es handelt sich um eine homogene Sammlung von Elementen, bei der auf jedes Element über mehrere Indizes zugegriffen wird.

Mehrdimensionale Array-Deklaration

  datatype     arrayName    [    size1][size2]...[sizeN];>

Wo,



  • Datentyp: Art der im Array zu speichernden Daten.
  • arrayName: Name des Arrays.
  • Größe1, Größe2,…, GrößeN: Größe jeder Dimension.

Beispiel:

Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>

Größe eines mehrdimensionalen Arrays

Die Größe eines Arrays entspricht der Größe des Datentyps multipliziert mit der Gesamtzahl der Elemente, die in einem Array gespeichert werden können. Wir können die Gesamtzahl der Elemente in einem Array berechnen, indem wir die Größe jeder Dimension eines mehrdimensionalen Arrays multiplizieren.

Zum Beispiel:

int arr1[2][4];>
  • Das Array int arr1[2][4] insgesamt speichern kann (2*4) = 8 Elemente.
  • In C++ benötigt der Datentyp int 4 Bytes und wir haben 8 Elemente im Array „arr1“ vom Typ int.
  • Gesamtgröße = 4*8 = 32 Byte .
int arr2[2][4][8];>
  • Array int arr2[2][4][8] kann insgesamt (2*4*8) = 64 Elemente speichern.
  • Die Gesamtgröße von „ arr2 ' = 64*4 = 256 Byte .

Um die obige Berechnung zu überprüfen, können wir verwenden Größe von() Methode, um die Größe eines Arrays zu ermitteln.

C++




// C++ program to verify the size of multidimensional> // arrays> #include> using> namespace> std;> > int> main()> {> >// creating 2d and 3d array> >int> arr1[2][4];> >int> arr2[2][4][8];> > >// using sizeof() operator to get the size of the above> >// arrays> >cout <<>'Size of array arr1: '> <<>sizeof>(arr1)> ><<>' bytes'> << endl;> >cout <<>'Size of array arr2: '> <<>sizeof>(arr2)> ><<>' bytes'>;> > >return> 0;> }>

>

>

Ausgabe

Size of array arr1: 32 bytes Size of array arr2: 256 bytes>

Die am häufigsten verwendeten mehrdimensionalen Arrays sind:

  • Zweidimensionales Array
  • Dreidimensionales Array

Zweidimensionales Array (oder 2D-Array)

Ein zweidimensionales Array in C++ ist eine Sammlung von Elementen, die in Zeilen und Spalten organisiert sind. Es kann als Tabelle oder Raster dargestellt werden, wobei auf jedes Element über zwei Indizes zugegriffen wird: einen für die Zeile und einen für die Spalte. Wie ein eindimensionales Array reichen auch zweidimensionale Array-Indizes sowohl für Zeilen als auch für Spalten von 0 bis n-1.

zweidimensionale Array-Organisation in C++

Syntax eines 2D-Arrays

data_Type array_name[ N ][ M ];

Wo,

  • N: Anzahl der Reihen.
  • M: Anzahl der Spalten.

Wir können ein 2D-Array statisch und dynamisch deklarieren. Bei der statischen Deklaration wird der Speicher während der Kompilierungszeit zugewiesen, bei der dynamischen Deklaration wird der Speicher zur Laufzeit zugewiesen. Das Obige ist die Syntax für die statische Deklaration eines 2D-Arrays. Informationen zum dynamischen Deklarieren des 2D-Arrays finden Sie unter Das Artikel.

Initialisierung zweidimensionaler Arrays in C++

Im Folgenden werden verschiedene Möglichkeiten zur Initialisierung eines 2D-Arrays aufgeführt:

  • Verwenden der Initialisierungsliste
  • Schleifen verwenden

1. Initialisieren Sie das 2D-Array mithilfe der Initialisierungsliste

Formatierungszeichenfolge Java

Wir können ein 2D-Array mithilfe einer Initialisierungsliste auf zwei Arten initialisieren. Nachfolgend finden Sie die erste Methode zum Initialisieren eines 2D-Arrays mithilfe einer Initialisierungsliste.

Erste Methode: Das folgende Array besteht aus 2 Zeilen und 4 Spalten. Die Elemente werden so gefüllt, dass die ersten 4 Elemente in der ersten Reihe und die nächsten 4 Elemente in der zweiten Reihe gefüllt werden.

int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};>

Zweite Methode: Die folgende Methode ist die sauberere Methode zum Initialisieren eines 2D-Arrays. Die verschachtelte Liste stellt die Elemente in einer Zeile dar und die Anzahl der darin enthaltenen Elemente entspricht der Anzahl der Spalten in einem 2D-Array. Die Anzahl der verschachtelten Listen entspricht der Anzahl der Spalten.

int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};>

2. Initialisierung des 2D-Arrays mithilfe von Schleifen

Wir können ein 2D-Array auch mithilfe von Schleifen initialisieren. Um das 2D-Array zu initialisieren, müssen wir zwei verschachtelte Schleifen verwenden und verschachtelte Schleifen haben die gleiche Dimension. Um beispielsweise ein 3D-Array zu initialisieren, müssen wir drei verschachtelte Schleifen verwenden. Sehen wir uns ein Beispiel an.

Beispiel: Im folgenden Beispiel haben wir das 2D-Array mit 1 initialisiert. Die äußere Schleife wird verwendet, um Zeilen zu verfolgen. i=0 bedeutet die erste Zeile, weil 0 indiziert, ähnlich bedeutet j=0 die erste Spalte und kombiniert dies mit x [0][0] stellt die erste Zelle des 2D-Arrays dar.

int x[2][4]; for(int i = 0; i <2; i++){  for(int j = 0; j <4; j++){  x[i][j] = 1;  } }>

Zugriff auf Elemente zweidimensionaler Arrays in C++

Wir können über Zeilen- und Spaltenindizes auf die Elemente eines zweidimensionalen Arrays zugreifen. Es ähnelt der Position der Matrixelemente, der einzige Unterschied besteht jedoch darin, dass die Indizierung hier bei 0 beginnt.

Syntax:

array_name[i][j];>

Wo,

  • ich: Index der Zeile.
  • J: Index der Spalte.

Beispiel: Nachfolgend finden Sie den Index der Elemente der zweiten Zeile und der dritten Spalte.

int x[1][2];>

Lassen Sie uns dies mithilfe von Code verstehen, indem wir Elemente eines 2D-Arrays drucken.

Beispiel eines 2D-Arrays

C++




// c++ program to illustrate the two dimensional array> #include> using> namespace> std;> > int> main()> {> > >int> count = 1;> > >// Declaring 2D array> >int> array1[3][4];> > >// Initialize 2D array using loop> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >array1[i][j] = count;> >count++;> >}> >}> > >// Printing the element of 2D array> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >cout << array1[i][j] <<>' '>;> >}> >cout << endl;> >}> > >return> 0;> }>

>

>

Ausgabe

1 2 3 4 5 6 7 8 9 10 11 12>

Erläuterung: Im obigen Code haben wir die Anzahl mit „1“ initialisiert und ein 2D-Array mit 3 Zeilen und 4 Spalten deklariert. Anschließend haben wir das Array mit dem Wert von count initialisiert und den Wert von count in jeder Iteration der Schleife erhöht. Dann drucken wir das 2D-Array mithilfe einer verschachtelten Schleife und können in der folgenden Ausgabe sehen, dass es 3 Zeilen und 4 Spalten gibt.

Zeitkomplexität: O(n*m)
Raumkomplexität: O(n*m)

Dabei ist n die Anzahl der Zeilen und m die Anzahl der Spalten.

Dreidimensionales Array in C++

Das 3D-Array ist eine Datenstruktur, die Elemente in einer dreidimensionalen quaderähnlichen Struktur speichert. Es kann als eine Sammlung mehrerer übereinander gestapelter zweidimensionaler Arrays dargestellt werden. Jedes Element in einem 3D-Array wird durch seine drei Indizes identifiziert: den Zeilenindex, den Spaltenindex und den Tiefenindex.

Dreidimensionale Array-Organisation in C++

Deklaration eines dreidimensionalen Arrays in C++

Um ein 3D-Array in C++ zu deklarieren, müssen wir seine dritte Dimension zusammen mit den 2D-Dimensionen angeben.

Syntax:

dataType arrayName[d][r];>
  • Datentyp: Art der Daten, die in jedem Element gespeichert werden sollen.
  • arrayName: Name des Arrays
  • D: Anzahl der 2D-Arrays oder Tiefe des Arrays.
  • R: Anzahl der Zeilen in jedem 2D-Array.
  • C: Anzahl der Spalten in jedem 2D-Array.

Beispiel:

int array[3][5][2];>

Initialisierung eines dreidimensionalen Arrays in C++

Um das 3D-Array in C++ zu initialisieren, folgen wir den gleichen Methoden, die wir zum Initialisieren des 2D-Arrays verwendet haben. Im 3D-Array haben wir eine weitere Dimension, also müssen wir eine weitere verschachtelte Liste von Elementen hinzufügen.

Ein 3D-Array in C kann wie folgt initialisiert werden:

  1. Initialisierungsliste
  2. Schleifen

Initialisierung des 3D-Arrays mithilfe der Initialisierungsliste

Methode 1: Bei dieser Methode müssen wir die Gesamtzahl der Elemente in geschweifte Klammern schreiben und jedes Element wird entsprechend der angegebenen Dimension an seiner Position platziert.

int x[3][5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,   10, 11, 12, 13, 14, 15, 16, 17, 18, 19,  20, 21, 22, 23, 24, 25, 26, 27, 28, 30};>

Methode 2 (besser) : Bei dieser Methode haben wir die Elemente mithilfe verschachtelter Listen partitioniert und sie ist leicht zu lesen.

int x[3][5][2] =   {      {   {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9}   }  ,     {   {10, 11}, {12, 13}, {14, 15}, {16, 17}, {18, 19}   }  ,    {   {20, 21}, {22, 23}, {24, 25}, {26, 27}, {28, 30}   }  ,    }  ;>

Initialisierung des 3D-Arrays mithilfe von Schleifen

Diese Methode entspricht der Initialisierung eines 2D-Arrays mithilfe von Schleifen mit einer weiteren verschachtelten Schleife für die dritte Dimension.

int x[3][5][2]; for (int i = 0; i <3; i++) {  for (int j = 0; j <5; j++) {  for (int k = 0; k <2; k++) {  x[i][j][k] =   (some_value)  ;  }  } }>

Zugriff auf Elemente im dreidimensionalen Array in C++

Der Zugriff auf Elemente in 3D-Arrays ist genauso einfach wie der Zugriff auf Elemente in 2D-Arrays. Hier müssen wir zusätzliche Arbeit leisten, indem wir eine weitere verschachtelte Schleife hinzufügen, um die dritte Dimension im Auge zu behalten.

C++




// C++ program to illustrate the 3d array> #include> using> namespace> std;> > int> main()> {> > >int> count = 0;> >// declaring 3d array> >int> x[2][2][3];> > >// initializing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >x[i][j][k] = count;> >count++;> >}> >}> >}> > >// printing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >printf>(>'x[%d][%d][%d] = %d '>, i, j, k,> >x[i][j][k]);> >count++;> >}> >}> >}> > >return> 0;> }>

>

>

Ausgabe

x[0][0][0] = 0 x[0][0][1] = 1 x[0][0][2] = 2 x[0][1][0] = 3 x[0][1][1] = 4 x[0][1][2] = 5 x[1][0][0] = 6 x[1][0][1] = 7 x[1][0][2] = 8 x[1][1][0] = 9 x[1][1][1] = 10 x[1][1][2] = 11>

Erläuterung: Im obigen Code haben wir das 3D-Array mithilfe der oben erläuterten Schleife mit der Zahl von 0 bis 7 mithilfe der Zählvariablen initialisiert und dann mithilfe derselben Schleife, die zum Initialisieren des 3D-Arrays verwendet wurde, auf die Elemente zugegriffen. Der einzige Unterschied besteht darin, dass ein Element beispielsweise nicht an einer bestimmten Position zugewiesen wird x[0][0][1]=1 Wir drucken das an diesem Ort gespeicherte Element aus, wie in der folgenden Ausgabe zu sehen ist.