C ++ daudzdimensionāli masīvi (2. un 3. masīvs)

Šajā apmācībā mēs uzzināsim par daudzdimensiju blokiem C ++. Precīzāk, kā tos deklarēt, piekļūt tiem un efektīvi izmantot mūsu programmā.

Programmā C ++ mēs varam izveidot masīva masīvu, kas pazīstams kā daudzdimensionāls masīvs. Piemēram:

 int x(3)(4);

Šeit x ir divdimensiju masīvs. Tajā var būt ne vairāk kā 12 elementi.

Mēs varam domāt par šo masīvu kā tabulu ar 3 rindām, un katrā rindā ir 4 kolonnas, kā parādīts zemāk.

Elementi divdimensiju masīvā C ++ programmēšanā

Arī trīsdimensiju bloki darbojas līdzīgi. Piemēram:

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

Šajā masīvā x var būt ne vairāk kā 24 elementi.

Masīva elementu kopējo skaitu mēs varam uzzināt, reizinot tā izmērus:

 2 x 4 x 3 = 24

Daudzdimensionālu masīvu inicializēšana

Tāpat kā parastu masīvu, mēs varam inicializēt daudzdimensionālu masīvu vairāk nekā vienā veidā.

1. Divdimensiju masīva inicializēšana

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

Iepriekš minētā metode nav ieteicama. Labāks veids, kā inicializēt šo masīvu ar tiem pašiem masīva elementiem, ir norādīts zemāk:

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

Šajā masīvā ir 2 rindas un 3 kolonnas, tāpēc mums ir divas elementu rindas ar 3 elementiem katrā.

Inicializē divdimensiju masīvu C ++

2. Trīsdimensiju masīva inicializēšana

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

Tas nav labs veids, kā inicializēt trīsdimensiju masīvu. Labāks veids, kā inicializēt šo masīvu, ir:

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

Ievērojiet šī trīsdimensiju masīva izmērus.

Pirmajai dimensijai ir vērtība 2. Tātad divi elementi, kas veido pirmo dimensiju, ir:

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

Otrajai dimensijai ir vērtība 3. Ievērojiet, ka katram no pirmās dimensijas elementiem katram ir trīs elementi:

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

Visbeidzot, intkatrā otrās dimensijas elementā ir četri skaitļi:

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

1. piemērs: divdimensiju masīvs

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

Rezultāts

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

Iepriekš minētajā piemērā mēs esam inicializējuši divdimensiju intmasīvu ar nosaukumu tests, kurā ir 3 "rindas" un 2 "kolonnas".

Šeit mēs esam izmantojuši ligzdoto forcilpu, lai parādītu masīva elementus.

  • ārējā cilpa no, i == 0lai i == 2piekļūtu masīva rindām
  • iekšējā cilpa no, j == 0lai j == 1piekļūtu masīva kolonnām

Visbeidzot, katrā atkārtojumā mēs izdrukājam masīva elementus.

2. piemērs: ievade divdimensiju masīvam

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

Rezultāts

 Ievadiet 6 numurus: 1 2 3 4 5 6 Skaitļi ir: skaitļi (0) (0): 1 numuri (0) (1): 2 numuri (0) (2): 3 numuri (1) (0): 4 numuri (1) (1): 5 numuri (1) (2): 6

Šeit mēs esam izmantojuši ligzdotu forcilpu, lai ņemtu 2d masīva ievadi. Kad viss ievadītais elements ir izmantots, formasīva dalībnieku drukāšanai esam izmantojuši citu ligzdotu cilpu.

3. piemērs: trīsdimensiju masīvs

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

Rezultāts

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

3D masīva elementu drukāšanas pamatkoncepcija ir līdzīga 2d masīva koncepcijai.

Tomēr, tā kā mēs manipulējam ar 3 dimensijām, mēs izmantojam ligzdotu cilpu ar 3 kopējām cilpām, nevis tikai 2:

  • ārējā cilpa no i == 0līdz i == 1piekļūst masīva pirmajai dimensijai
  • vidējā cilpa no j == 0līdz j == 2piekļūst masīva otrajai dimensijai
  • iekšējā cilpa no k == 0līdz k == 1piekļūst masīva trešajai dimensijai

Kā redzam, masīva sarežģītība palielinās eksponenciāli, palielinoties izmēriem.

Interesanti raksti...