C++ multidimensionale arrays
C++ multidimensionale arrays
In deze zelfstudie leren we over multidimensionale arrays in C++. Meer specifiek, hoe u ze declareert, toegang krijgt en efficiënt gebruikt 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, x is 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 weergegeven.
Driedimensionale arrays werken ook op een vergelijkbare manier. Bijvoorbeeld:
float x[2][4][3];
Deze matrix 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};
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.
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 array.
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} and {23, 12, 23, 2} for Element 1. {13, 4, 56, 3}, {5, 9, 3, 5} and {5, 1, 4, 9} for Element 2.
Ten slotte zijn er vier int
getallen 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 <iostream>
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 int
. geïnitialiseerd array met de naam test die 3 "rijen" en 2 "kolommen" heeft.
Hier hebben we de geneste for
. gebruikt loop om de array-elementen weer te geven.
- de buitenste lus van
i == 0
toti == 2
toegang krijgen tot de rijen van de array - de binnenste lus van
j == 0
totj == 1
toegang tot de kolommen van de array
Ten slotte printen we de array-elementen in elke iteratie.
Voorbeeld 2:invoer voor tweedimensionale array
#include <iostream>
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 < 3; ++j) {
cin >> 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
Enter 6 numbers: 1 2 3 4 5 6 The numbers are: numbers[0][0]: 1 numbers[0][1]: 2 numbers[0][2]: 3 numbers[1][0]: 4 numbers[1][1]: 5 numbers[1][2]: 6
Hier hebben we een geneste for
. gebruikt lus om de invoer van de 2D-array te nemen. Nadat alle invoer is gedaan, hebben we een andere geneste for
. gebruikt loop 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 <iostream>
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 3 totale lussen in plaats van slechts 2:
- de buitenste lus van
i == 0
toti == 1
geeft toegang tot de eerste dimensie van de array - de middelste lus van
j == 0
totj == 2
geeft toegang tot de tweede dimensie van de array - de binnenste lus van
k == 0
totk == 1
geeft toegang tot de derde dimensie van de array
Zoals we kunnen zien, neemt de complexiteit van de array exponentieel toe met de toename van de afmetingen.
C Taal
- C#-matrices
- C# Multidimensionale array
- C# Jagged Array
- C++ Type-conversie
- C++-operators
- C++ Opmerkingen
- Array doorgeven aan een functie in C++-programmering
- Java-kopieerarrays
- Arrays in C++ | Verklaren | Initialiseren | Aanwijzer naar matrixvoorbeelden
- C++ Dynamische toewijzing van arrays met voorbeeld
- MATLAB - Arrays