O matrice este un tip de structură de date utilizat pentru a stoca colecția de articole de același tip de date păstrate în locații de memorie contigue. Matricele pot fi unidimensionale sau multidimensionale în funcție de numărul de direcții în care matricea poate crește. În acest articol, vom studia matricele multidimensionale, cum ar fi matricele bidimensionale și matricele tridimensionale.
Ce este Multidimensional Array în C++?
O matrice multidimensională este o matrice cu mai multe dimensiuni. Este o colecție omogenă de articole în care fiecare element este accesat folosind mai mulți indici.
Declarație de matrice multidimensională
datatype arrayName [ size1][size2]...[sizeN];>
Unde,
- tip de date: Tipul de date care urmează să fie stocate în matrice.
- arrayName: Numele matricei.
- mărimea 1, mărimea 2,..., mărimea N: Dimensiunea fiecărei dimensiuni.
Exemplu:
Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>
Dimensiunea unui tablou multidimensional
Mărimea unei matrice este egală cu dimensiunea tipului de date înmulțită cu numărul total de elemente care pot fi stocate într-o matrice. Putem calcula numărul total de elemente dintr-o matrice înmulțind dimensiunea fiecărei dimensiuni a unei matrice multidimensionale.
De exemplu:
int arr1[2][4];>
- Matricea int arr1[2][4] poate stoca totalul (2*4) = 8 elemente.
- În C++, tipul de date int are 4 octeți și avem 8 elemente în matrice „arr1” de tip int.
- Dimensiunea totala = 4*8 = 32 de octeți .
int arr2[2][4][8];>
- Matrice int arr2[2][4][8] poate stoca total (2*4*8) = 64 de elemente.
- Dimensiunea totală a „ arr2 ' = 64*4 = 256 de octeți .
Pentru a verifica calculul de mai sus putem folosi dimensiunea() metoda de a afla dimensiunea unui tablou.
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;> }> |
>
>
java mainIeșire
Size of array arr1: 32 bytes Size of array arr2: 256 bytes>
Cele mai utilizate matrice multidimensionale sunt:
- Matrice bidimensională
- Matrice tridimensională
Matrice bidimensională (sau matrice 2D)
O matrice bidimensională în C++ este o colecție de elemente organizate în rânduri și coloane. Poate fi vizualizat ca un tabel sau o grilă, unde fiecare element este accesat folosind doi indici: unul pentru rând și unul pentru coloană. La fel ca o matrice unidimensională, indicii matricei bidimensionale variază de la 0 la n-1 atât pentru rânduri, cât și pentru coloane.

Sintaxa matricei 2D
data_Type nume_matrice[ n ][ m ];
Unde,
- n: Număr de rânduri.
- m: Numar de coloane.
Putem declara o matrice 2D static și dinamic. În declarația statică, memoria este alocată în timpul compilării, iar în memoria dinamică este alocată în timpul rulării. Mai sus este sintaxa pentru declarația statică a unui tablou 2D. Pentru a ști cum să declarați dinamic matricea 2d, consultați acest articol.
Citirea fișierului csv în java
Inițializarea tablourilor bidimensionale în C++
Mai jos sunt prezentate diferite moduri de a inițializa o matrice 2D:
- Utilizarea Listei de inițializare
- Folosind bucle
1. Inițializați matricea 2D utilizând lista de inițializare
Putem inițializa o matrice 2D folosind o listă de inițializare în două moduri. Mai jos este prima metodă de inițializare a unei matrice 2D folosind o listă de inițializare.
Prima metoda: Matricea de mai jos are 2 rânduri și 4 coloane. Elementele sunt umplute astfel încât primele 4 elemente să fie umplute pe primul rând, iar următoarele 4 elemente să fie umplute pe al doilea rând.
int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};> A doua metodă: Modul de mai jos este cel mai curat mod de a inițializa o matrice 2D, lista imbricată reprezintă elementele dintr-un rând, iar numărul de elemente din interiorul acestuia este egal cu numărul de coloane dintr-o matrice 2D. Numărul de liste imbricate reprezintă numărul de coloane.
int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};> 2. Inițializarea matricei 2D folosind bucle
De asemenea, putem inițializa matrice 2D folosind bucle. Pentru a inițializa matricea 2D, trebuie să folosim două bucle imbricate, iar buclele imbricate sunt egale cu dimensiunea. De exemplu, pentru a inițializa o matrice 3D trebuie să folosim trei bucle imbricate. Să vedem un exemplu.
Exemplu: În exemplul de mai jos, inițializează tabloul 2D cu 1. Bucla exterioară este folosită pentru a urmări rândurile i=0 înseamnă primul rând din cauza 0 indexând în mod similar j=0 înseamnă prima coloană și combinând acest x [0][0] reprezintă prima celulă a matricei 2D.
int x[2][4]; for(int i = 0; i <2; i++){ for(int j = 0; j <4; j++){ x[i][j] = 1; } }> Accesarea elementelor matricelor bidimensionale în C++
Putem accesa elementele unui tablou bidimensional folosind indici de rânduri și coloane. Este similară cu poziția elementului de matrice, dar singura diferență este că aici indexarea începe de la 0.
Sintaxă:
array_name[i][j];>
Unde,
- eu: Indexul rândului.
- j: Indexul coloanei.
Exemplu: Mai jos este indexul elementelor din al doilea rând și a treia coloană.
int x[1][2];>
Să înțelegem acest lucru folosind cod prin imprimarea elementelor unei matrice 2D.
Exemplu de matrice 2D
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;> }> |
>
>Ieșire
1 2 3 4 5 6 7 8 9 10 11 12>
Explicaţie: În codul de mai sus, am inițializat numărul cu „1” și am declarat o matrice 2D cu 3 rânduri și 4 coloane, după care am inițializat matricea cu valoarea numărului și valoarea incrementală a numărului în fiecare iterație a buclei. Apoi tipărim matricea 2D folosind o buclă imbricată și putem vedea în rezultatul de mai jos că există 3 rânduri și 4 coloane.
Complexitatea timpului: O(n*m)
Complexitatea spațiului: O(n*m)
unde n este numărul de rânduri și m este numărul de coloane.
Matrice tridimensională în C++
Matricea 3D este o structură de date care stochează elemente într-o structură tridimensională asemănătoare cuboidului. Poate fi vizualizat ca o colecție de mai multe matrice bidimensionale stivuite una peste alta. Fiecare element dintr-o matrice 3D este identificat prin cei trei indici ai săi: indicele de rând, indexul de coloană și indicele de adâncime.

ordine lexicografică
Declarația matricei tridimensionale în C++
Pentru a declara o matrice 3D în C++, trebuie să specificăm a treia dimensiune a acesteia împreună cu dimensiunile 2D.
Sintaxă:
dataType arrayName[d][r];>
- dataType: Tip de date care trebuie stocate în fiecare element.
- arrayName: Numele matricei
- d: Numărul de matrice 2D sau Adâncimea matricei.
- r: Numărul de rânduri din fiecare matrice 2D.
- c: Numărul de coloane din fiecare matrice 2D.
Exemplu:
int array[3][5][2];>
Inițializarea matricei tridimensionale în C++
Pentru a inițializa matricea 3D în C++, vom urma aceleași metode pe care le-am folosit pentru a inițializa matricea 2D. În matricea 3D, mai avem o dimensiune, așa că trebuie să adăugăm încă o listă imbricată de elemente.
O matrice 3D în C poate fi inițializată utilizând:
- Lista de inițializare
- Bucle
Inițializarea matricei 3D utilizând Lista de inițializare
Metoda 1: În această metodă, trebuie să scriem numărul total de elemente în interiorul acolade, iar fiecare articol este plasat la poziția sa în funcție de dimensiunea dată.
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};> Metoda 2 (mai bună) : În această metodă, am partiționat elementele folosind liste imbricate și este ușor de citit.
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} } , } ;> Inițializarea matricei 3D folosind bucle
Această metodă este aceeași cu inițializarea unei matrice 2D folosind bucle cu încă o buclă imbricată pentru a treia dimensiune.
metode arraylist
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) ; } } }> Accesarea elementelor în Three-Dimensional Array în C++
Accesarea elementelor din matrice 3D este la fel de simplă ca și accesarea elementelor din matrice 2D. Aici ceea ce trebuie să facem este să adăugăm încă o buclă imbricată pentru a urmări cea de-a treia dimensiune.
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;> }> |
>
>Ieșire
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>
Explicaţie: În codul de mai sus, am inițializat matricea 3D utilizând bucla așa cum s-a explicat mai sus cu numărul de la 0 la 7 folosind variabila count și apoi accesând elementele folosind aceeași buclă folosită pentru inițializarea matricei 3D. Singura diferență este că, în loc să atribuiți un element la o anumită poziție, spunem x[0][0][1]=1 tipărim elementul stocat în acea locație, așa cum se vede în rezultatul de mai jos.