logo

C++ Multidimensional Array

Et array er en type datastruktur, der bruges til at lagre samlingen af ​​de samme datatypeelementer, der opbevares på sammenhængende hukommelsesplaceringer. Arrays kan være endimensionelle eller multidimensionelle baseret på antallet af retninger, som arrayet kan vokse i. I denne artikel vil vi studere multidimensionelle arrays såsom todimensionelle arrays og tredimensionelle arrays.

Hvad er Multidimensional Array i C++?

Et multidimensionelt array er et array med mere end én dimension. Det er den homogene samling af elementer, hvor hvert element tilgås ved hjælp af flere indekser.

Multidimensional Array Declaration

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

hvor,



  • datatype: Type af data, der skal gemmes i arrayet.
  • matrixnavn: Navnet på arrayet.
  • størrelse 1, størrelse 2,..., størrelse N: Størrelse af hver dimension.

Eksempel:

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

Størrelsen af ​​et multidimensionelt array

Størrelsen af ​​et array er lig med størrelsen af ​​datatypen ganget med det samlede antal elementer, der kan lagres i et array. Vi kan beregne det samlede antal elementer i et array ved at gange størrelsen af ​​hver dimension af et multidimensionelt array.

For eksempel:

int arr1[2][4];>
  • Arrayet int arr1[2][4] kan gemme alt (2*4) = 8 elementer.
  • I C++ tager int datatype 4 bytes, og vi har 8 elementer i arrayet 'arr1' af typen int.
  • Samlet størrelse = 4*8 = 32 bytes .
int arr2[2][4][8];>
  • Array int arr2[2][4][8] kan gemme i alt (2*4*8) = 64 elementer.
  • Den samlede størrelse af ' arr2 ' = 64*4 = 256 bytes .

For at verificere ovenstående beregning kan vi bruge størrelse på () metode til at finde størrelsen af ​​et array.

C++


listnode java



// 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;> }>

>

>

Produktion

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

De mest udbredte multidimensionelle arrays er:

  • To dimensionelle array
  • Tredimensionelt array

Todimensionel array (eller 2D-array)

Et todimensionelt array i C++ er en samling af elementer organiseret i rækker og kolonner. Det kan visualiseres som en tabel eller et gitter, hvor hvert element tilgås ved hjælp af to indekser: et for rækken og et for kolonnen. Ligesom en en-dimensionel matrix varierer todimensionelle matrixindekser også fra 0 til n-1 for både rækker og kolonner.

svæver i css

todimensionel array-organisation i c++

Syntaks for 2D-array

data_Type matrixnavn[ n ][ m ];

Hvor,

  • n: Antal rækker.
  • m: Antal kolonner.

Vi kan erklære et 2D-array statisk og dynamisk. I statisk deklaration tildeles hukommelse under kompileringstid, og i dynamisk hukommelse tildeles under kørsel. Ovenstående er syntaksen for den statiske erklæring af et 2D-array. For at vide, hvordan man erklærer 2d-arrayet dynamisk, henvises til det her artikel.

Initialisering af to-dimensionelle arrays i C++

Forskellige måder at initialisere et 2D-array på er angivet nedenfor:

  • Brug af initialiseringsliste
  • Brug af loops

1. Initialiser 2D-array ved hjælp af Initializer-listen

Vi kan initialisere et 2D-array ved hjælp af en initialiseringsliste på to måder. Nedenfor er den første metode til initialisering af et 2D-array ved hjælp af en initialiseringsliste.

Første metode: Nedenstående array har 2 rækker og 4 kolonner. Elementerne udfyldes på en måde, så de første 4 elementer udfyldes i den første række og de næste 4 elementer udfyldes i den anden række.

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

Anden metode: Nedenstående måde er den renere måde at initialisere et 2D-array på. Den indlejrede liste repræsenterer elementerne i en række, og antallet af elementer inde i den er lig med antallet af kolonner i et 2D-array. Antallet af indlejrede lister repræsenterer antallet af kolonner.

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

2. Initialisering af 2D-array ved hjælp af Loops

Vi kan også initialisere 2D-array ved hjælp af loops. For at initialisere 2D-array skal vi bruge to indlejrede sløjfer, og indlejrede sløjfer er lig med dimensionen. For eksempel, for at initialisere et 3D-array, skal vi bruge tre indlejrede sløjfer. Lad os se et eksempel.

Eksempel: I eksemplet nedenfor har vi initialiseret 2D-arrayet med 1. Den ydre sløjfe bruges til at spore rækker i=0 betyder den første række på grund af 0-indeksering på samme måde som j=0 betyder den første kolonne og kombinerer denne x [0][0] repræsenterer den første celle i 2D-arrayet.

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

Adgang til elementer af todimensionelle arrays i C++

Vi kan få adgang til elementerne i et 2-dimensionelt array ved hjælp af række- og kolonneindekser. Det ligner matrixelementets position, men den eneste forskel er, at her starter indeksering fra 0.

Syntaks:

array_name[i][j];>

hvor,

python os listedir
  • jeg: Indeks af række.
  • j: Indeks for kolonnen.

Eksempel: Nedenfor er indekset over elementer i anden række og tredje kolonne.

int x[1][2];>

Lad os forstå dette ved at bruge kode ved at udskrive elementer i et 2D-array.

Eksempel på 2D Array

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;> }>

>

>

Produktion

konverter fra char til int java
1 2 3 4 5 6 7 8 9 10 11 12>

Forklaring: I ovenstående kode har vi initialiseret tællingen med '1' og erklæret et 2D-array med 3 rækker og 4 kolonner, hvorefter vi initialiserede arrayet med værdien af ​​count og stigningsværdien af ​​count i hver iteration af sløjfen. Derefter udskriver vi 2D-arrayet ved hjælp af en indlejret løkke, og vi kan se i nedenstående output, at der er 3 rækker og 4 kolonner.

Tidskompleksitet: O(n*m)
Rumkompleksitet: O(n*m)

hvor n er antallet af rækker og m er antallet af kolonner.

Tredimensionelt array i C++

3D-arrayet er en datastruktur, der lagrer elementer i en tredimensionel kasselignende struktur. Det kan visualiseres som en samling af flere todimensionelle arrays stablet oven på hinanden. Hvert element i et 3D-array identificeres ved dets tre indekser: rækkeindekset, kolonneindekset og dybdeindekset.

tredimensionel array-organisation i c++

Erklæring om tredimensionelt array i C++

For at erklære et 3D-array i C++ skal vi angive dets tredje dimension sammen med 2D-dimensioner.

Syntaks:

dataType arrayName[d][r];>
  • datatype: Type data, der skal lagres i hvert element.
  • matrixnavn: Navnet på arrayet
  • d: Antal 2D-arrays eller dybde af array.
  • r: Antal rækker i hvert 2D-array.
  • c: Antal kolonner i hvert 2D-array.

Eksempel:

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

Initialisering af Three-Dimensional Array i C++

For at initialisere 3D-arrayet i C++, følger vi de samme metoder, som vi har brugt til at initialisere 2D-arrayet. I 3D-array har vi en dimension mere, så vi er nødt til at tilføje endnu en indlejret liste over elementer.

Et 3D-array i C kan initialiseres ved at bruge:

  1. Initialiseringsliste
  2. Sløjfer

Initialisering af 3D Array ved hjælp af Initializer List

Metode 1: I denne metode skal vi skrive det samlede antal elementer inde i krøllede seler, og hvert element placeres på sin position i henhold til den angivne dimension.

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};>

Metode 2 (bedre) : I denne metode har vi partitioneret elementerne ved hjælp af indlejrede lister, og det er let at læse.

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}   }  ,    }  ;>

Initialisering af 3D Array ved hjælp af Loops

streng til int i java

Denne metode er den samme som initialisering af et 2D-array ved hjælp af loops med en mere indlejret loop til den tredje 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)  ;  }  } }>

Adgang til elementer i Three-Dimensional Array i C++

Adgang til elementer i 3D-arrays er lige så simpelt som at få adgang til elementer i 2D-arrays. Her, hvad vi skal gøre ekstra arbejde, er at tilføje en mere indlejret løkke for at holde styr på den tredje dimension.

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;> }>

>

>

Produktion

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>

Forklaring: I ovenstående kode har vi initialiseret 3D-arrayet ved hjælp af løkken som forklaret ovenfor med tallet fra 0 til 7 ved hjælp af tællevariablen og derefter adgang til elementerne ved hjælp af den samme løkke, der blev brugt til at initialisere 3D-arrayet. Den eneste forskel er, at i stedet for at tildele et element på en bestemt position siger x[0][0][1]=1 vi udskriver elementet, der er gemt på det sted, som vist i nedenstående output.