C ++ daugiamatės masyvai (2 ir 3 d. Masyvai)

Šioje pamokoje sužinosime apie daugialypius matricas C ++. Tiksliau, kaip juos deklaruoti, pasiekti ir efektyviai naudoti mūsų programoje.

C ++ sistemoje galime sukurti masyvo masyvą, žinomą kaip daugiamatį masyvą. Pavyzdžiui:

 int x(3)(4);

Čia x yra dvimatis masyvas. Jame gali būti daugiausia 12 elementų.

Mes galime galvoti apie šį masyvą kaip lentelę su 3 eilėmis ir kiekvienoje eilutėje yra 4 stulpeliai, kaip parodyta žemiau.

C ++ programavimo dvimačio masyvo elementai

Panašiai veikia ir trimatės masyvai. Pavyzdžiui:

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

Šiame masyve x gali būti daugiausia 24 elementai.

Visą masyvo elementų skaičių galime sužinoti paprasčiausiai padauginę jo matmenis:

 2 x 4 x 3 = 24

Daugialypis masyvo inicijavimas

Kaip ir įprastą masyvą, daugiamatį masyvą galime inicijuoti daugiau nei vienu būdu.

1. Dvimatės masyvo inicijavimas

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

Minėtas metodas nėra pageidaujamas. Geresnis būdas inicijuoti šį masyvą su tais pačiais masyvo elementais yra pateiktas žemiau:

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

Šiame masyve yra 2 eilutės ir 3 stulpeliai, todėl mes turime dvi elementų eilutes su 3 elementais.

Inicijuojamas dvimatis masyvas C ++

2. Trimatės masyvo inicijavimas

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

Tai nėra geras būdas inicijuoti trimatį masyvą. Geresnis būdas inicijuoti šį masyvą yra:

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

Atkreipkite dėmesį į šios trimatės masyvo matmenis.

Pirmasis aspektas turi vertę 2. Taigi, du elementai, sudarantys pirmąjį aspektą, yra šie:

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

Antroji dimensija turi vertę 3. Atkreipkite dėmesį, kad kiekvienas iš pirmojo aspekto elementų turi po tris elementus:

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

Galiausiai intkiekviename iš antrojo matmens elementų yra keturi skaičiai:

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

1 pavyzdys: dviejų matmenų masyvas

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

Rezultatas

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

Ankstesniame pavyzdyje mes inicijavome dviejų matmenų intmasyvą, pavadintą testas, kuriame yra 3 „eilutės“ ir 2 „stulpeliai“.

Čia mes panaudojome įdėtą forkilpą masyvo elementams rodyti.

  • išorinis kilpa iš i == 0į i == 2prieigos masyvo eilučių
  • vidinis kilpa nuo j == 0iki j == 1prieiti prie masyvo stulpelių

Galiausiai kiekviename kartojime atspausdiname masyvo elementus.

2 pavyzdys: dviejų matmenų masyvo įvesties paėmimas

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

Rezultatas

 Įveskite 6 skaičius: 1 2 3 4 5 6 Skaičiai yra šie: skaičiai (0) (0): 1 skaičiai (0) (1): 2 skaičiai (0) (2): 3 skaičiai (1) (0): 4 skaičiai (1) (1): 5 skaičiai (1) (2): 6

Here, we have used a nested for loop to take the input of the 2d array. Once all the input has been taken, we have used another nested for loop to print the array members.

Example 3: Three Dimensional Array

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

Output

 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

The basic concept of printing elements of a 3d array is similar to that of a 2d array.

However, since we are manipulating 3 dimensions, we use a nested for loop with 3 total loops instead of just 2:

  • the outer loop from i == 0 to i == 1 accesses the first dimension of the array
  • the middle loop from j == 0 to j == 2 accesses the second dimension of the array
  • vidinė kilpa nuo k == 0iki k == 1pasiekia trečiąjį masyvo matmenį

Kaip matome, masyvo sudėtingumas didėja eksponentiškai, didėjant matmenims.

Įdomios straipsniai...