C ++ flerdimensjonale matriser (andre og 3d matriser)

I denne opplæringen lærer vi om flerdimensjonale matriser i C ++. Mer spesifikt hvordan du kan erklære dem, få tilgang til dem og bruke dem effektivt i vårt program.

I C ++ kan vi lage en matrise av en matrise, kjent som en flerdimensjonal matrise. For eksempel:

 int x(3)(4);

Her er x en todimensjonal matrise. Den har plass til maksimalt 12 elementer.

Vi kan tenke på denne matrisen som en tabell med 3 rader, og hver rad har 4 kolonner som vist nedenfor.

Elementer i todimensjonalt array i C ++ programmering

Tredimensjonale matriser fungerer også på en lignende måte. For eksempel:

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

Denne matrisen x kan maksimalt inneholde 24 elementer.

Vi kan finne ut det totale antallet elementer i matrisen ved å multiplisere dimensjonene:

 2 x 4 x 3 = 24

Multidimensjonal oppsett initialisering

Som en vanlig matrise kan vi initialisere en flerdimensjonal matrise på mer enn én måte.

1. Initialisering av todimensjonalt array

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

Ovennevnte metode er ikke foretrukket. En bedre måte å initialisere denne matrisen med de samme matriseelementene er gitt nedenfor:

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

Denne matrisen har 2 rader og 3 kolonner, og derfor har vi to rader med elementer med 3 elementer hver.

Initialisere en todimensjonal matrise i C ++

2. Initialisering av tredimensjonalt array

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

Dette er ikke en god måte å initialisere et tredimensjonalt utvalg på. En bedre måte å initialisere denne matrisen på er:

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

Legg merke til dimensjonene til denne tredimensjonale matrisen.

Den første dimensjonen har verdien 2. Så de to elementene som består av den første dimensjonen er:

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

Den andre dimensjonen har verdien 3. Legg merke til at hvert av elementene i den første dimensjonen har tre elementer hver:

 (3, 4, 2, 3), (0, -3, 9, 11) og (23, 12, 23, 2) for element 1. (13, 4, 56, 3), (5, 9, 3 , 5) og (5, 1, 4, 9) for element 2.

Til slutt er det fire inttall inne i hvert av elementene i den andre dimensjonen:

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

Eksempel 1: Tvedimensjonalt array

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

Produksjon

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

I eksemplet ovenfor har vi initialisert en todimensjonal intmatrise som heter test som har 3 "rader" og 2 "kolonner".

Her har vi brukt den nestede forsløyfen til å vise matriseelementene.

  • den ytre sløyfen fra for i == 0å i == 2få tilgang til radene i matrisen
  • den indre løkken fra for j == 0å j == 1få tilgang til kolonnene i matrisen

Til slutt skriver vi ut matriseelementene i hver iterasjon.

Eksempel 2: Ta input for todimensjonalt array

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

Produksjon

 Skriv inn 6 tall: 1 2 3 4 5 6 Tallene er: tall (0) (0): 1 tall (0) (1): 2 tall (0) (2): 3 tall (1) (0): 4 tall (1) (1): 5 tall (1) (2): 6

Her har vi brukt en nestet forløkke for å ta inngangen til 2d-matrisen. Når alle inngangene er tatt, har vi brukt en annen nestet forløkke til å skrive ut array-medlemmene.

Eksempel 3: Tredimensjonalt 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; )

Produksjon

 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

Det grunnleggende konseptet med å skrive ut elementer i en 3d-serie ligner på en 2d-serie.

Men siden vi manipulerer 3 dimensjoner, bruker vi en nestet for loop med 3 totale løkker i stedet for bare 2:

  • den ytre sløyfen fra for i == 0å få i == 1tilgang til den første dimensjonen i matrisen
  • midtløkken fra for j == 0å få j == 2tilgang til den andre dimensjonen i matrisen
  • den innerste sløyfen fra for k == 0å få k == 1tilgang til den tredje dimensjonen i matrisen

Som vi kan se, øker kompleksiteten til matrisen eksponentielt med økningen i dimensjoner.

Interessante artikler...