C ++ multidimenzionálne polia (druhé a 3d pole)

V tomto tutoriále sa dozvieme viacrozmerné polia v C ++. Konkrétnejšie, ako ich deklarovať, pristupovať k nim a efektívne ich používať v našom programe.

V C ++ môžeme vytvoriť pole poľa, známe ako multidimenzionálne pole. Napríklad:

 int x(3)(4);

Tu je x dvojrozmerné pole. Môže obsahovať maximálne 12 prvkov.

Toto pole si môžeme predstaviť ako tabuľku s 3 riadkami a každý riadok má 4 stĺpce, ako je uvedené nižšie.

Prvky v dvojrozmernom poli v programovaní v C ++

Podobne fungujú aj trojrozmerné polia. Napríklad:

 float x(2)(4)(3);

Toto pole x môže obsahovať maximálne 24 prvkov.

Celkový počet prvkov v poli môžeme zistiť jednoduchým vynásobením jeho rozmerov:

 2 x 4 x 3 = 24

Inicializácia multidimenzionálneho poľa

Rovnako ako bežné pole môžeme aj my inicializovať viacrozmerné pole viac ako jedným spôsobom.

1. Inicializácia dvojrozmerného poľa

 int test(2)(3) = (2, 4, 5, 9, 0, 19);

Vyššie uvedená metóda nie je uprednostňovaná. Lepší spôsob inicializácie tohto poľa s rovnakými prvkami poľa je uvedený nižšie:

 int test(2)(3) = ( (2, 4, 5), (9, 0, 19));

Toto pole má 2 riadky a 3 stĺpce, a preto máme dva riadky prvkov, z ktorých každý má 3 prvky.

Inicializácia dvojrozmerného poľa v C ++

2. Inicializácia trojrozmerného poľa

 int test(2)(3)(4) = (3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9);

Toto nie je dobrý spôsob inicializácie trojrozmerného poľa. Lepší spôsob inicializácie tohto poľa je:

 int test(2)(3)(4) = ( ( (3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2) ), ( (13, 4, 56, 3), (5, 9, 3, 5), (5, 1, 4, 9) ) );

Všimnite si rozmery tohto trojrozmerného poľa.

Prvá dimenzia má hodnotu 2. Dva prvky tvoriace prvú dimenziu sú teda:

 Prvok 1 = (((3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2)) Prvok 2 = (((13, 4, 56, 3), ( 5, 9, 3, 5), (5, 1, 4, 9)) 

Druhá dimenzia má hodnotu 3. Všimnite si, že každý z prvkov prvej dimenzie má každý tri prvky:

 (3, 4, 2, 3), (0, -3, 9, 11) a (23, 12, 23, 2) pre prvok 1. (13, 4, 56, 3), (5, 9, 3 , 5) a (5, 1, 4, 9) pre prvok 2.

Nakoniec existujú štyri intčísla vo vnútri každého z prvkov druhej dimenzie:

 (3, 4, 2, 3) (0, -3, 9, 11) …… 

Príklad 1: Dvojrozmerné pole

 // C++ Program to display all elements // of an initialised two dimensional array #include using namespace std; int main() ( int test(3)(2) = ((2, -5), (4, 0), (9, 1)); // use of nested for loop // access rows of the array for (int i = 0; i < 3; ++i) ( // access columns of the array for (int j = 0; j < 2; ++j) ( cout << "test(" << i << ")(" << j << ") = " << test(i)(j) << endl; ) ) return 0; )

Výkon

 test (0) (0) = 2 test (0) (1) = -5 test (1) (0) = 4 test (1) (1) = 0 test (2) (0) = 9 testov (2) (1) = 1

Vo vyššie uvedenom príklade sme inicializovali dvojrozmerné intpole s názvom test, ktoré má 3 „riadky“ a 2 „stĺpce“.

Tu sme použili vnorenú forslučku na zobrazenie prvkov poľa.

  • Vonkajšia slučka z i == 0k i == 2prístupu riadky matice
  • vnútorná slučka od j == 0na j == 1prístup k stĺpcom poľa

Nakoniec v každej iterácii vytlačíme prvky poľa.

Príklad 2: Zadanie vstupu pre dvojrozmerné pole

 #include using namespace std; int main() ( int numbers(2)(3); cout << "Enter 6 numbers: " << endl; // Storing user input in the array for (int i = 0; i < 2; ++i) ( for (int j = 0; j > numbers(i)(j); ) ) cout << "The numbers are: " << endl; // Printing array elements for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( cout << "numbers(" << i << ")(" << j << "): " << numbers(i)(j) << endl; ) ) return 0; )

Výkon

 Zadajte 6 čísel: 1 2 3 4 5 6 Čísla sú: čísla (0) (0): 1 čísla (0) (1): 2 čísla (0) (2): 3 čísla (1) (0): 4 čísla (1) (1): 5 čísel (1) (2): 6

Tu sme použili vnorenú forslučku na vstup 2d poľa. Len čo sme vybrali všetok vstup, použili sme ďalšiu vnorenú forslučku na tlač členov poľa.

Príklad 3: Trojrozmerné pole

 // C++ Program to Store value entered by user in // three dimensional array and display it. #include using namespace std; int main() ( // This array can store upto 12 elements (2x3x2) int test(2)(3)(2) = ( ( (1, 2), (3, 4), (5, 6) ), ( (7, 8), (9, 10), (11, 12) ) ); // Displaying the values with proper index. for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( cout << "test(" << i << ")(" << j << ")(" << k << ") = " << test(i)(j)(k) << endl; ) ) ) return 0; )

Výkon

 test (0) (0) (0) = 1 test (0) (0) (1) = 2 test (0) (1) (0) = 3 test (0) (1) (1) = 4 test ( 0) (2) (0) = 5 testov (0) (2) (1) = 6 testov (1) (0) (0) = 7 testov (1) (0) (1) = 8 testov (1) (1) (0) = 9 testov (1) (1) (1) = 10 testov (1) (2) (0) = 11 testov (1) (2) (1) = 12

Základný koncept tlačových prvkov 3d poľa je podobný ako koncept 2d poľa.

Pretože však manipulujeme s 3 dimenziami, použijeme vnorenú slučku for s 3 celkovými slučkami namiesto iba 2:

  • vonkajšia slučka od i == 0do i == 1pristupuje k prvej dimenzii poľa
  • stredná slučka od j == 0do j == 2pristupuje k druhej dimenzii poľa
  • najvnútornejšia slučka od k == 0do k == 1pristupuje k tretej dimenzii poľa

Ako vidíme, zložitosť poľa rastie exponenciálne s nárastom rozmerov.

Zaujímavé články...