Pole je typ dátovej štruktúry, ktorá sa používa na uloženie kolekcie položiek rovnakého dátového typu uložených v súvislých pamäťových miestach. Polia môžu byť jednorozmerné alebo viacrozmerné na základe počtu smerov, v ktorých môže pole rásť. V tomto článku budeme študovať viacrozmerné polia, ako sú dvojrozmerné polia a trojrozmerné polia.
Čo je viacrozmerné pole v C++?
Viacrozmerné pole je pole s viac ako jednou dimenziou. Je to homogénna kolekcia položiek, kde sa ku každému prvku pristupuje pomocou viacerých indexov.
Deklarácia multidimenzionálneho poľa
datatype arrayName [ size1][size2]...[sizeN];>
kde,
- Dátový typ: Typ údajov, ktoré sa majú uložiť do poľa.
- názov poľa: Názov poľa.
- veľkosť 1, veľkosť 2,…, veľkosť N: Veľkosť každého rozmeru.
Príklad:
Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>
Veľkosť viacrozmerného poľa
Veľkosť poľa sa rovná veľkosti dátového typu vynásobenej celkovým počtom prvkov, ktoré je možné uložiť do poľa. Celkový počet prvkov v poli môžeme vypočítať vynásobením veľkosti každého rozmeru viacrozmerného poľa.
Napríklad:
int arr1[2][4];>
- Pole int arr1[2][4] môže uložiť celkom (2 x 4) = 8 prvkov.
- V C++ dátový typ int zaberá 4 bajty a v poli máme 8 prvkov „arr1“ typu int.
- Celková veľkosť = 4 * 8 = 32 bajtov .
int arr2[2][4][8];>
- Pole int arr2[2][4][8] môže uložiť celkom (2*4*8) = 64 prvkov.
- Celková veľkosť „ arr2 ' = 64 * 4 = 256 bajtov .
Na overenie vyššie uvedeného výpočtu môžeme použiť veľkosť() metóda na zistenie veľkosti poľa.
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;> }> |
chmod 755
>
>Výkon
Size of array arr1: 32 bytes Size of array arr2: 256 bytes>
Najpoužívanejšie viacrozmerné polia sú:
- Dvojrozmerné pole
- Trojrozmerné pole
Dvojrozmerné pole (alebo 2D pole)
Dvojrozmerné pole v C++ je kolekcia prvkov usporiadaných do riadkov a stĺpcov. Dá sa zobraziť ako tabuľka alebo mriežka, kde sa ku každému prvku pristupuje pomocou dvoch indexov: jeden pre riadok a jeden pre stĺpec. Rovnako ako jednorozmerné pole, aj indexy dvojrozmerného poľa sa pohybujú od 0 do n-1 pre riadky aj stĺpce.

python triedená n-tica
Syntax 2D poľa
data_Type názov_pola[ n ][ m ];
Kde,
- n: Počet riadkov.
- m: Počet stĺpcov.
2D pole môžeme deklarovať staticky aj dynamicky. V statickej deklarácii je pamäť alokovaná počas kompilácie a v dynamickej pamäte je alokovaná počas behu. Vyššie uvedené je syntax pre statickú deklaráciu 2D poľa. Ak chcete vedieť, ako dynamicky deklarovať 2d pole, pozrite si toto článok.
Inicializácia dvojrozmerných polí v C++
Nižšie sú uvedené rôzne spôsoby inicializácie 2D poľa:
- Používanie zoznamu inicializátorov
- Používanie slučiek
1. Inicializujte 2D pole pomocou zoznamu Initializer
2D pole môžeme inicializovať pomocou zoznamu inicializátorov dvoma spôsobmi. Nižšie je uvedený prvý spôsob inicializácie 2D poľa pomocou zoznamu inicializátorov.
Prvý spôsob: Nižšie uvedené pole má 2 riadky a 4 stĺpce. Prvky sa vyplnia tak, že prvé 4 prvky sa vyplnia v prvom riadku a ďalšie 4 prvky sa vyplnia v druhom riadku.
int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};> Druhá metóda: Nižšie uvedený spôsob je čistejší spôsob inicializácie 2D poľa, vnorený zoznam predstavuje prvky v riadku a počet prvkov v ňom sa rovná počtu stĺpcov v 2D poli. Počet vnorených zoznamov predstavuje počet stĺpcov.
int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};> 2. Inicializácia 2D poľa pomocou slučiek
2D pole môžeme inicializovať aj pomocou slučiek. Na inicializáciu 2D poľa musíme použiť dve vnorené slučky a vnorené slučky sa rovnajú rozmeru. Napríklad na inicializáciu 3D poľa musíme použiť tri vnorené slučky. Pozrime sa na príklad.
Príklad: V nižšie uvedenom príklade sme inicializovali 2D pole s 1. Vonkajšia slučka sa používa na sledovanie riadkov i=0 znamená prvý riadok z dôvodu indexovania 0 podobne j=0 znamená prvý stĺpec a kombináciu tohto x [0][0] predstavuje prvú bunku 2D poľa.
int x[2][4]; for(int i = 0; i <2; i++){ for(int j = 0; j <4; j++){ x[i][j] = 1; } }> Prístup k prvkom dvojrozmerných polí v C++
K prvkom 2-rozmerného poľa môžeme pristupovať pomocou riadkových a stĺpcových indexov. Je to podobné ako pozícia prvku matice, ale jediný rozdiel je v tom, že indexovanie tu začína od 0.
Syntax:
array_name[i][j];>
kde,
- ja: Index riadku.
- j: Index stĺpca.
Príklad: Nižšie je uvedený zoznam prvkov druhého riadku a tretieho stĺpca.
int x[1][2];>
Pochopme to pomocou kódu vytlačením prvkov 2D poľa.
Príklad 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;> }> |
>
>Výkon
1 2 3 4 5 6 7 8 9 10 11 12>
Vysvetlenie: Vo vyššie uvedenom kóde sme inicializovali počet „1“ a deklarovali 2D pole s 3 riadkami a 4 stĺpcami, potom sme inicializovali pole s hodnotou počtu a prírastkovou hodnotou počtu v každej iterácii cyklu. Potom vytlačíme 2D pole pomocou vnorenej slučky a na výstupe nižšie vidíme, že existujú 3 riadky a 4 stĺpce.
Časová zložitosť: O(n*m)
Priestorová zložitosť: O(n*m)
kde n je počet riadkov a m je počet stĺpcov.
Trojrozmerné pole v C++
3D pole je dátová štruktúra, ktorá ukladá prvky do trojrozmernej kvádrovej štruktúry. Dá sa vizualizovať ako súbor viacerých dvojrozmerných polí naskladaných na sebe. Každý prvok v 3D poli je identifikovaný svojimi tromi indexmi: index riadku, index stĺpca a index hĺbky.

príklady programovania v pythone
Deklarácia trojrozmerného poľa v C++
Aby sme deklarovali 3D pole v C++, musíme zadať jeho tretí rozmer spolu s 2D rozmermi.
Syntax:
dataType arrayName[d][r];>
- Dátový typ: Typ údajov, ktoré sa majú uložiť v každom prvku.
- názov poľa: Názov poľa
- d: Počet 2D polí alebo Hĺbka poľa.
- r: Počet riadkov v každom 2D poli.
- c: Počet stĺpcov v každom 2D poli.
Príklad:
int array[3][5][2];>
Inicializácia trojrozmerného poľa v C++
Na inicializáciu 3D poľa v C++ postupujeme rovnakými metódami, aké sme použili na inicializáciu 2D poľa. V 3D poli máme ešte jeden rozmer, takže musíme pridať ešte jeden vnorený zoznam prvkov.
3D pole v C je možné inicializovať pomocou:
- Zoznam inicializátorov
- Slučky
Inicializácia 3D poľa pomocou zoznamu inicializátorov
Metóda 1: Pri tejto metóde musíme zapísať celkový počet prvkov do zložených zátvoriek a každá položka sa umiestni na svoju pozíciu podľa daného rozmeru.
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};> Metóda 2 (lepšia) : V tejto metóde sme rozdelili prvky pomocou vnorených zoznamov a je ľahko čitateľná.
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} } , } ;> Inicializácia 3D poľa pomocou slučiek
Táto metóda je rovnaká ako inicializácia 2D poľa pomocou slučiek s ďalšou vnorenou slučkou pre tretí rozmer.
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) ; } } }> Prístup k prvkom v trojrozmernom poli v C++
Prístup k prvkom v 3D poliach je rovnako jednoduchý ako prístup k prvkom v 2D poliach. Tu musíme urobiť ďalšiu prácu, a to pridanie ďalšej vnorenej slučky na sledovanie tretej dimenzie.
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;> }> |
>
html tagy
>Výkon
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>
Vysvetlenie: Vo vyššie uvedenom kóde sme inicializovali 3D pole pomocou slučky, ako je vysvetlené vyššie, s číslom od 0 do 7 pomocou premennej počtu a potom pristupujeme k prvkom pomocou rovnakej slučky, ktorá sa používa na inicializáciu 3D poľa. Jediný rozdiel je v tom, že namiesto priradenia prvku na konkrétnej pozícii povedzte x[0][0][1]=1 vytlačíme prvok uložený na tomto mieste, ako je vidieť na výstupe nižšie.