Array multidimensionali C ++ (array 2 ° e 3d)

In questo tutorial, impareremo a conoscere gli array multidimensionali in C ++. Più specificamente, come dichiararli, accedervi e utilizzarli in modo efficiente nel nostro programma.

In C ++, possiamo creare un array di un array, noto come array multidimensionale. Per esempio:

 int x(3)(4);

Qui, x è un array bidimensionale. Può contenere un massimo di 12 elementi.

Possiamo pensare a questo array come una tabella con 3 righe e ogni riga ha 4 colonne come mostrato di seguito.

Elementi in array bidimensionale nella programmazione C ++

Anche gli array tridimensionali funzionano in modo simile. Per esempio:

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

Questo array x può contenere un massimo di 24 elementi.

Possiamo scoprire il numero totale di elementi nell'array semplicemente moltiplicando le sue dimensioni:

 2 x 4 x 3 = 24

Inizializzazione di array multidimensionali

Come un normale array, possiamo inizializzare un array multidimensionale in più di un modo.

1. Inizializzazione di array bidimensionali

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

Il metodo sopra non è preferito. Di seguito viene fornito un modo migliore per inizializzare questo array con gli stessi elementi dell'array:

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

Questo array ha 2 righe e 3 colonne, motivo per cui abbiamo due righe di elementi con 3 elementi ciascuna.

Inizializzazione di una matrice bidimensionale in C ++

2. Inizializzazione dell'array tridimensionale

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

Questo non è un buon modo per inizializzare un array tridimensionale. Un modo migliore per inizializzare questo 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) ) );

Notare le dimensioni di questa matrice tridimensionale.

La prima dimensione ha il valore 2. Quindi, i due elementi che compongono la prima dimensione sono:

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

La seconda dimensione ha il valore 3. Si noti che ciascuno degli elementi della prima dimensione ha tre elementi ciascuno:

 (3, 4, 2, 3), (0, -3, 9, 11) e (23, 12, 23, 2) per l'Elemento 1. (13, 4, 56, 3), (5, 9, 3 , 5) e (5, 1, 4, 9) per Element 2.

Infine, ci sono quattro intnumeri all'interno di ciascuno degli elementi della seconda dimensione:

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

Esempio 1: array bidimensionale

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

Produzione

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

Nell'esempio precedente, abbiamo inizializzato un intarray bidimensionale denominato test che ha 3 "righe" e 2 "colonne".

Qui abbiamo usato il forciclo annidato per visualizzare gli elementi dell'array.

  • il ciclo esterno da i == 0per i == 2accedere alle righe dell'array
  • il ciclo interno da j == 0per j == 1accedere alle colonne dell'array

Infine, stampiamo gli elementi dell'array in ogni iterazione.

Esempio 2: prendere input per array bidimensionale

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

Produzione

 Immettere 6 numeri: 1 2 3 4 5 6 I numeri sono: numeri (0) (0): 1 numeri (0) (1): 2 numeri (0) (2): 3 numeri (1) (0): 4 numeri (1) (1): 5 numeri (1) (2): 6

Qui abbiamo utilizzato un forciclo annidato per prendere l'input dell'array 2d. Una volta che tutto l'input è stato preso, abbiamo usato un altro forciclo annidato per stampare i membri dell'array.

Esempio 3: array tridimensionale

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

Produzione

 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

Il concetto di base della stampa di elementi di un array 3D è simile a quello di un array 2d.

Tuttavia, poiché stiamo manipolando 3 dimensioni, utilizziamo un ciclo for annidato con 3 cicli totali invece di 2:

  • il ciclo esterno da i == 0a i == 1accede alla prima dimensione dell'array
  • il ciclo centrale da j == 0a j == 2accede alla seconda dimensione dell'array
  • il ciclo più interno da k == 0a k == 1accede alla terza dimensione dell'array

Come possiamo vedere, la complessità dell'array aumenta esponenzialmente con l'aumentare delle dimensioni.

Articoli interessanti...