C ++ multidimensionale arrays (2e en 3d arrays)

In deze zelfstudie leren we over multidimensionale arrays in C ++. Meer specifiek, hoe u ze kunt declareren, openen en efficiënt kunt gebruiken in ons programma.

In C ++ kunnen we een array van een array maken, ook wel een multidimensionale array genoemd. Bijvoorbeeld:

 int x(3)(4);

Hier is x een tweedimensionale array. Het kan maximaal 12 elementen bevatten.

We kunnen deze array zien als een tabel met 3 rijen en elke rij heeft 4 kolommen, zoals hieronder wordt weergegeven.

Elementen in tweedimensionale array in C ++ Programming

Driedimensionale arrays werken ook op een vergelijkbare manier. Bijvoorbeeld:

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

Deze array x kan maximaal 24 elementen bevatten.

We kunnen het totale aantal elementen in de array achterhalen door simpelweg de afmetingen te vermenigvuldigen:

 2 x 4 x 3 = 24

Multidimensionale array-initialisatie

Net als een normale array kunnen we een multidimensionale array op meer dan één manier initialiseren.

1. Initialisatie van tweedimensionale array

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

De bovenstaande methode heeft niet de voorkeur. Een betere manier om deze array te initialiseren met dezelfde array-elementen wordt hieronder gegeven:

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

Deze array heeft 2 rijen en 3 kolommen, daarom hebben we twee rijen elementen met elk 3 elementen.

Initialiseren van een tweedimensionale array in C ++

2. Initialisatie van driedimensionale 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);

Dit is geen goede manier om een ​​driedimensionale array te initialiseren. Een betere manier om deze array te initialiseren is:

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

Let op de afmetingen van deze driedimensionale reeks.

De eerste dimensie heeft de waarde 2. De twee elementen waaruit de eerste dimensie bestaat, zijn dus:

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

De tweede dimensie heeft de waarde 3. Merk op dat elk van de elementen van de eerste dimensie elk drie elementen heeft:

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

Ten slotte zijn er vier intcijfers binnen elk van de elementen van de tweede dimensie:

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

Voorbeeld 1: tweedimensionale 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; )

Uitvoer

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

In het bovenstaande voorbeeld hebben we een tweedimensionale intarray met de naam test geïnitialiseerd met 3 "rijen" en 2 "kolommen".

Hier hebben we de geneste forlus gebruikt om de array-elementen weer te geven.

  • de buitenste lus van i == 0om i == 2toegang te krijgen tot de rijen van de array
  • de binnenste lus van j == 0om j == 1toegang te krijgen tot de kolommen van de array

Ten slotte drukken we de array-elementen in elke iteratie af.

Voorbeeld 2: Input nemen voor tweedimensionale 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; )

Uitvoer

 Voer 6 cijfers in: 1 2 3 4 5 6 De cijfers zijn: cijfers (0) (0): 1 cijfers (0) (1): 2 cijfers (0) (2): 3 cijfers (1) (0): 4 nummers (1) (1): 5 nummers (1) (2): 6

Hier hebben we een geneste forlus gebruikt om de invoer van de 2d-array te nemen. Nadat alle invoer is ontvangen, hebben we een andere geneste forlus gebruikt om de arrayleden af ​​te drukken.

Voorbeeld 3: driedimensionale 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; )

Uitvoer

 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

Het basisconcept van het afdrukken van elementen van een 3D-array is vergelijkbaar met dat van een 2D-array.

Omdat we echter 3 dimensies manipuleren, gebruiken we een geneste for-lus met in totaal 3 lussen in plaats van slechts 2:

  • de buitenste lus van i == 0tot geeft i == 1toegang tot de eerste dimensie van de array
  • de middelste lus van j == 0tot geeft j == 2toegang tot de tweede dimensie van de array
  • de binnenste lus van k == 0tot geeft k == 1toegang tot de derde dimensie van de array

Zoals we kunnen zien, neemt de complexiteit van de array exponentieel toe naarmate de afmetingen toenemen.

Interessante artikelen...