C ++ flerdimensionella matriser (andra och 3d-matriser)

I den här handledningen lär vi oss om flerdimensionella matriser i C ++. Mer specifikt, hur man deklarerar dem, får åtkomst till dem och använder dem effektivt i vårt program.

I C ++ kan vi skapa en array i en array, känd som en flerdimensionell array. Till exempel:

 int x(3)(4);

Här är x en tvådimensionell matris. Den rymmer maximalt 12 element.

Vi kan tänka på denna matris som en tabell med 3 rader och varje rad har 4 kolumner som visas nedan.

Element i tvådimensionell matris i C ++ programmering

Tredimensionella matriser fungerar också på liknande sätt. Till exempel:

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

Denna array x kan rymma maximalt 24 element.

Vi kan ta reda på det totala antalet element i matrisen genom att multiplicera dess dimensioner:

 2 x 4 x 3 = 24

Multidimensionell matrisinitialisering

Som en vanlig matris kan vi initiera en flerdimensionell matris på mer än ett sätt.

1. Initiering av tvådimensionell matris

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

Ovanstående metod föredras inte. Ett bättre sätt att initiera denna matris med samma arrayelement ges nedan:

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

Denna matris har 2 rader och 3 kolumner, varför vi har två rader med element med 3 element vardera.

Initiera en tvådimensionell matris i C ++

2. Initiering av tredimensionell matris

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

Detta är inte ett bra sätt att initiera en tredimensionell matris. Ett bättre sätt att initiera denna matris är:

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

Lägg märke till dimensionerna för denna tredimensionella matris.

Den första dimensionen har värdet 2. Så de två elementen som innehåller den första dimensionen är:

 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 andra dimensionen har värdet 3. Observera att var och en av elementen i den första dimensionen har tre element vardera:

 (3, 4, 2, 3), (0, -3, 9, 11) och (23, 12, 23, 2) för element 1. (13, 4, 56, 3), (5, 9, 3 , 5) och (5, 1, 4, 9) för element 2.

Slutligen finns det fyra intsiffror inuti vart och ett av elementen i den andra dimensionen:

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

Exempel 1: Tvådimensionell matris

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

Produktion

 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 exemplet ovan har vi initierat en tvådimensionell intmatris med namnet test som har 3 "rader" och 2 "kolumner".

Här har vi använt den kapslade forslingan för att visa arrayelementen.

  • den yttre slingan från för i == 0att i == 2komma åt raderna i matrisen
  • den inre slingan från för j == 0att j == 1komma åt kolumnerna i matrisen

Slutligen skriver vi ut arrayelementen i varje iteration.

Exempel 2: Ta inmatning för tvådimensionell matris

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

Produktion

 Ange 6 nummer: 1 2 3 4 5 6 Siffrorna är: siffror (0) (0): 1 nummer (0) (1): 2 nummer (0) (2): 3 nummer (1) (0): 4 siffror (1) (1): 5 nummer (1) (2): 6

Här har vi använt en kapslad forslinga för att ta inmatningen från 2d-matrisen. När alla inmatningar har tagits har vi använt en annan kapslad forslinga för att skriva ut arraymedlemmarna.

Exempel 3: Tredimensionell matris

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

Produktion

 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

Grundkonceptet för att skriva ut element i en 3d-array liknar den för en 2d-array.

Eftersom vi manipulerar 3 dimensioner använder vi dock en kapslad för loop med 3 totala loopar istället för bara 2:

  • den yttre slingan från för i == 0att komma i == 1åt den första dimensionen i matrisen
  • den mellersta slingan från j == 0till j == 2åtkomst till den andra dimensionen i matrisen
  • den innersta slingan från k == 0till k == 1åtkomst till den tredje dimensionen i matrisen

Som vi kan se, ökar komplexiteten i arrayen exponentiellt med ökningen i dimensioner.

Intressanta artiklar...