C ++ vícerozměrná pole (2. a 3d pole)

V tomto kurzu se dozvíme o vícerozměrných polích v C ++. Přesněji řečeno, jak je deklarovat, přistupovat k nim a efektivně je používat v našem programu.

V C ++ můžeme vytvořit pole pole, známé jako vícerozměrné pole. Například:

 int x(3)(4);

Zde je x dvourozměrné pole. Může obsahovat maximálně 12 prvků.

Toto pole si můžeme představit jako tabulku se 3 řádky a každý řádek má 4 sloupce, jak je znázorněno níže.

Prvky v dvourozměrném poli v programování v C ++

Podobně fungují i ​​trojrozměrná pole. Například:

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

Toto pole x může obsahovat maximálně 24 prvků.

Můžeme zjistit celkový počet prvků v poli jednoduše vynásobením jeho rozměrů:

 2 x 4 x 3 = 24

Inicializace vícerozměrného pole

Stejně jako normální pole můžeme inicializovat vícerozměrné pole více než jedním způsobem.

1. Inicializace dvourozměrného pole

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

Výše uvedená metoda není upřednostňována. Lepší způsob inicializace tohoto pole se stejnými prvky pole je uveden níže:

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

Toto pole má 2 řádky a 3 sloupce, a proto máme dvě řady prvků, každý se 3 prvky.

Inicializace dvourozměrného pole v C ++

2. Inicializace trojrozměrného pole

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

To není dobrý způsob inicializace trojrozměrného pole. Lepší způsob inicializace tohoto pole 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šimněte si rozměrů tohoto trojrozměrného pole.

První dimenze má hodnotu 2. Dva prvky tvořící první dimenzi jsou tedy:

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

Druhá dimenze má hodnotu 3. Všimněte si, že každý z prvků první dimenze má každý tři prvky:

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

Nakonec jsou intuvnitř každého z prvků druhé dimenze čtyři čísla:

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

Příklad 1: Dvourozměrné 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ýstup

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

Ve výše uvedeném příkladu jsme inicializovali dvourozměrné intpole s názvem test, které má 3 „řádky“ a 2 „sloupce“.

Zde jsme použili vnořenou forsmyčku k zobrazení prvků pole.

  • vnější smyčka od i == 0pro i == 2přístup k řádkům pole
  • vnitřní smyčka od j == 0pro j == 1přístup ke sloupcům pole

Nakonec v každé iteraci vytiskneme prvky pole.

Příklad 2: Zadání vstupu pro dvourozměrné 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ýstup

 Zadejte 6 čísel: 1 2 3 4 5 6 Čísla jsou: čísla (0) (0): 1 čísla (0) (1): 2 čísla (0) (2): 3 čísla (1) (0): 4 čísla (1) (1): 5 čísel (1) (2): 6

Zde jsme použili vnořenou forsmyčku k převzetí vstupu 2D pole. Po převzetí všech vstupů jsme fork tisku členů pole použili jinou vnořenou smyčku.

Příklad 3: Trojrozměrné 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ýstup

 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 testů (0) (2) (1) = 6 testů (1) (0) (0) = 7 testů (1) (0) (1) = 8 testů (1) (1) (0) = 9 testů (1) (1) (1) = 10 testů (1) (2) (0) = 11 testů (1) (2) (1) = 12

Základní koncept tisku prvků 3D pole je podobný konceptu 2D pole.

Jelikož však manipulujeme se 3 dimenzemi, použijeme místo vnořených smyček 3 celkem celkem:

  • vnější smyčka od i == 0do i == 1přistupuje k první dimenzi pole
  • prostřední smyčka od j == 0do j == 2přistupuje k druhé dimenzi pole
  • nejvnitřnější smyčka od k == 0do k == 1přistupuje ke třetí dimenzi pole

Jak vidíme, složitost pole se exponenciálně zvyšuje s nárůstem rozměrů.

Zajímavé články...