logo

C++ Multidimensional Array

En array är en typ av datastruktur som används för att lagra samlingen av samma datatypsobjekt som hålls på sammanhängande minnesplatser. Matriser kan vara endimensionella eller flerdimensionella baserat på antalet riktningar som matrisen kan växa i. I den här artikeln kommer vi att studera flerdimensionella arrayer som tvådimensionella arrayer och tredimensionella arrayer.

Vad är Multidimensional Array i C++?

En flerdimensionell array är en array med mer än en dimension. Det är den homogena samlingen av objekt där varje element nås med hjälp av flera index.



Flerdimensionell matrisdeklaration

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

var,

  • data typ: Typ av data som ska lagras i arrayen.
  • arrayName: Arrayens namn.
  • storlek1, storlek2,..., storlekN: Storlek på varje dimension.

Exempel:

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

Storleken på en multidimensionell array

Storleken på en array är lika med storleken på datatypen multiplicerat med det totala antalet element som kan lagras i en array. Vi kan beräkna det totala antalet element i en array genom att multiplicera storleken på varje dimension i en flerdimensionell array.



Till exempel:

int arr1[2][4];>
  • Arrayen int arr1[2][4] kan lagra totalt (2*4) = 8 element.
  • I C++ tar int datatypen 4 byte och vi har 8 element i arrayen 'arr1' av typen int.
  • Total storlek = 4*8 = 32 byte .
int arr2[2][4][8];>
  • Array int arr2[2][4][8] kan lagra totalt (2*4*8) = 64 element.
  • Den totala storleken på ' arr2 ' = 64*4 = 256 byte .

För att verifiera ovanstående beräkning kan vi använda storlek av() metod för att hitta storleken på en array.

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

>

delsträngsfunktion java
>

Produktion

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

De mest använda flerdimensionella arrayerna är:

  • Tvådimensionell array
  • Tredimensionell array

Tvådimensionell matris (eller 2D-matris)

En tvådimensionell array i C++ är en samling element organiserade i rader och kolumner. Det kan visualiseras som en tabell eller ett rutnät, där varje element nås med två index: ett för raden och ett för kolumnen. Liksom en endimensionell array sträcker sig även tvådimensionella arrayindex från 0 till n-1 för både rader och kolumner.

tvådimensionell array-organisation i c++

Syntax för 2D-array

data_Type array_name[ n ][ m ];

Var,

  • n: Antal rader.
  • m: Antal kolumner.

Vi kan deklarera en 2D-array statiskt och dynamiskt. I statisk deklaration tilldelas minne under kompileringstid och i dynamiskt minne tilldelas under körning. Ovanstående är syntaxen för den statiska deklarationen av en 2D-array. För att veta hur man deklarerar 2d-matrisen dynamiskt, se detta artikel.

Initialisering av tvådimensionella arrayer i C++

Olika sätt att initiera en 2D-array ges nedan:

  • Använder initieringslista
  • Använda loopar

1. Initiera 2D-arrayen med hjälp av Initialiseringslistan

Vi kan initiera en 2D-array med hjälp av en initialiseringslista på två sätt. Nedan är den första metoden för att initiera en 2D-array med hjälp av en initialiseringslista.

Första metoden: Arrayen nedan har 2 rader och 4 kolumner. Elementen fylls på så sätt att de första 4 elementen fylls i den första raden och de nästa 4 elementen fylls i den andra raden.

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

Andra metoden: Nedanstående sätt är det renare sättet att initiera en 2D-array, den kapslade listan representerar elementen i en rad och antalet element inuti den är lika med antalet kolumner i en 2D-array. Antalet kapslade listor representerar antalet kolumner.

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

2. Initiering av 2D-array med loopar

Vi kan också initiera 2D-array med loopar. För att initiera 2D-array måste vi använda två kapslade loopar och kapslade loopar är lika med dimensionen. Till exempel, för att initiera en 3D-array måste vi använda tre kapslade loopar. Låt oss se ett exempel.

Exempel: I exemplet nedan har vi initierat 2D-matrisen med 1. Den yttre slingan används för att spåra rader i=0 betyder den första raden på grund av 0-indexering på samma sätt som j=0 betyder den första kolumnen och att kombinera denna x [0][0] representerar den första cellen i 2D-matrisen.

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

Åtkomst till element i tvådimensionella arrayer i C++

Vi kan komma åt elementen i en 2-dimensionell array med hjälp av rad- och kolumnindex. Det liknar matriselementets position men den enda skillnaden är att här börjar indexeringen från 0.

Syntax:

array_name[i][j];>

var,

  • jag: Index över raden.
  • j: Index för kolumnen.

Exempel: Nedan visas indexet över element i den andra raden och den tredje kolumnen.

int x[1][2];>

Låt oss förstå detta med hjälp av kod genom att skriva ut element i en 2D-array.

Exempel 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

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

Förklaring: I ovanstående kod har vi initierat räkningen med '1' och deklarerat en 2D-array med 3 rader och 4 kolumner. Därefter initierade vi arrayen med värdet av count och inkrementvärdet av count i varje iteration av slingan. Sedan skriver vi ut 2D-matrisen med en kapslad slinga och vi kan se i utgången nedan att det finns 3 rader och 4 kolumner.

Tidskomplexitet: På M)
Utrymmes komplexitet: På M)

där n är antalet rader och m är antalet kolumner.

Tredimensionell array i C++

3D-arrayen är en datastruktur som lagrar element i en tredimensionell kubliknande struktur. Det kan visualiseras som en samling av flera tvådimensionella arrayer staplade ovanpå varandra. Varje element i en 3D-array identifieras av dess tre index: radindex, kolumnindex och djupindex.

tredimensionell array-organisation i c++

Deklaration av tredimensionell array i C++

För att deklarera en 3D-array i C++ måste vi ange dess tredje dimension tillsammans med 2D-dimensioner.

Syntax:

dataType arrayName[d][r];>
  • data typ: Typ av data som ska lagras i varje element.
  • arrayName: Arrayens namn
  • d: Antal 2D-arrayer eller djup av array.
  • r: Antal rader i varje 2D-array.
  • c: Antal kolumner i varje 2D-array.

Exempel:

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

Initialisering av tredimensionell array i C++

För att initiera 3D-arrayen i C++ följer vi samma metoder som vi har använt för att initiera 2D-arrayen. I 3D-array har vi ytterligare en dimension så vi måste lägga till ytterligare en kapslad lista med element.

En 3D-array i C kan initieras genom att använda:

tcp ip-modell
  1. Initialiseringslista
  2. Slingor

Initialisering av 3D Array med hjälp av Initialiseringslista

Metod 1: I den här metoden måste vi skriva det totala antalet element inuti lockiga hängslen, och varje föremål placeras på sin position enligt den angivna dimensionen.

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

Metod 2 (bättre) : I den här metoden har vi partitionerat elementen med hjälp av kapslade listor och det är lätt att läsa.

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 av 3D Array med loopar

Denna metod är densamma som att initiera en 2D-array med loopar med en mer kapslad loop för den tredje dimensionen.

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

Åtkomst till element i Three-Dimensional Array i C++

Att komma åt element i 3D-arrayer är lika enkelt som att komma åt element i 2D-arrayer. Här vad vi måste göra extra arbete är att lägga till ytterligare en kapslad loop för att hålla reda på den tredje dimensionen.

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>

Förklaring: I ovanstående kod har vi initierat 3D-matrisen med slingan som förklarats ovan med siffran från 0 till 7 med hjälp av räknevariabeln och sedan åtkomst till elementen med samma loop som används för att initiera 3D-matrisen. Den enda skillnaden är att istället för att tilldela ett element på en viss position säg x[0][0][1]=1 vi skriver ut elementet som är lagrat på den platsen som visas i utgången nedan.