C ++ többdimenziós tömbök (2. és 3d tömbök)

Ebben az oktatóanyagban megtudhatjuk a többdimenziós tömböket a C ++ nyelven. Pontosabban arról, hogy miként kell deklarálni őket, hozzáférni hozzájuk és hatékonyan felhasználni őket programunkban.

A C ++ - ban létrehozhatunk egy tömb tömbjét, amelyet többdimenziós tömbnek nevezünk. Például:

 int x(3)(4);

Itt x kétdimenziós tömb. Legfeljebb 12 elemet képes befogadni.

Ezt a tömböt úgy gondolhatjuk, mint egy 3 soros táblázatot, és minden sorban 4 oszlop van, az alábbiak szerint.

Kétdimenziós tömb elemei a C ++ programozásban

A háromdimenziós tömbök is hasonló módon működnek. Például:

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

Ez az x tömb maximum 24 elemet tartalmazhat.

Megtalálhatjuk a tömb összes elemének számát, egyszerűen megszorozva a méreteit:

 2 x 4 x 3 = 24

Többdimenziós tömb inicializálása

A normál tömbhöz hasonlóan egy többdimenziós tömböt többféleképpen is inicializálhatunk.

1. Kétdimenziós tömb inicializálása

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

A fenti módszer nem előnyös. A tömb ugyanazokkal a tömbelemekkel történő inicializálásának jobb módja az alábbiakban található:

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

Ennek a tömbnek 2 sora és 3 oszlopa van, ezért van két sor elemünk, mindegyikben 3 elem.

Kétdimenziós tömb inicializálása C ++ nyelven

2. Háromdimenziós tömb inicializálása

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

Ez nem jó módszer a háromdimenziós tömb inicializálására. A tömb inicializálásának jobb módja:

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

Figyelje meg ennek a háromdimenziós tömbnek a méreteit.

Az első dimenzió értéke van 2. Tehát az első dimenziót alkotó két elem a következő:

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

A második dimenziónak megvan az értéke 3. Vegye figyelembe, hogy az első dimenzió minden elemének három-három eleme van:

 (3, 4, 2, 3), (0, -3, 9, 11) és (23, 12, 23, 2) az 1. elemnél. (13, 4, 56, 3), (5, 9, 3 , 5) és (5, 1, 4, 9) a 2. elemre.

Végül négy intszám található a második dimenzió minden elemében:

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

1. példa: Kétdimenziós tömb

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

Kimenet

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

A fenti példában egy kétdimenziós inttömböt neveztünk el, amelynek neve 3 "sor" és 2 "oszlop".

Itt a beágyazott forhurkot használtuk a tömb elemek megjelenítéséhez.

  • A külső hurok i == 0a i == 2hozzáférést a sorok a tömb
  • a belső hurok j == 0a j == 1hozzáférést az oszlopok a tömb

Végül minden iterációban kinyomtatjuk a tömb elemeket.

2. példa: Input felvétele kétdimenziós tömbhöz

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

Kimenet

 Írjon be 6 számot: 1 2 3 4 5 6 A számok a következők: számok (0) (0): 1 számok (0) (1): 2 számok (0) (2): 3 számok (1) (0): 4 számok (1) (1): 5 számok (1) (2): 6

Itt beágyazott forhurkot használtunk a 2d tömb bemenetének felvételére. Miután az összes bemenet megtörtént, egy másik beágyazott forhurkot használtunk a tömb tagok kinyomtatására.

3. példa: Háromdimenziós tömb

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

Kimenet

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

A 3D tömb elemeinek nyomtatásának alapkoncepciója hasonló a 2d tömb elveihez.

Mivel azonban 3 dimenziót manipulálunk, csak 2 helyett 3 teljes hurokkal rendelkező beágyazott hurkot használunk:

  • a külső hurok i == 0az i == 1hozzáfér az első dimenzió a tömb
  • a középső hurok j == 0az j == 2hozzáfér a második dimenzió a tömb
  • A legbelső hurok k == 0a k == 1hozzáfér a harmadik dimenzió a tömb

Mint láthatjuk, a tömb bonyolultsága a dimenziók növekedésével exponenciálisan növekszik.

érdekes cikkek...