Matrice 2D

Un array bidimensionale è un array che ha due indici per ogni elemento (spesso tali array sono chiamati con una sola parola - matrice). 
È conveniente memorizzare ed elaborare vari dati tabulari in una matrice. Proprio come qualsiasi tabella è composta da righe e colonne, le matrici sono composte da righe e colonne.
Per chiarezza, puoi rappresentare un array come questo:
Sebbene, in effetti, nella memoria del computer, la matrice sarà simile a questa:

Per utilizzare una matrice in un programma, deve essere dichiarata proprio come un normale array, specificando il tipo di dati e due dimensioni (numeri o costanti). È anche possibile (e desiderabile) impostare immediatamente i valori iniziali. Ad esempio, reimposta tutti gli elementi.
Esempio 1: Dichiarazione di un array di 3 righe e 3 colonne con valori iniziali arbitrari
intA[3][3] = {{0,1,2},
                {3,4,5},
                {6,7,8} };
Esempio 2: Dichiarazione di un array di 5 righe e 10 colonne (la dimensione è impostata tramite una costante) con valori iniziali pari a zero
cost int N = 5, M = 10;
doppio B[N][M] = {};
Per fare riferimento a un elemento specifico della matrice, utilizziamo due coppie di parentesi, nella prima parentesi indichiamo il numero di riga, nella seconda - il numero di colonna.
Esempio:  
A[0][2] = 100; //la numerazione delle righe e delle colonne parte da zero

Riempimento della matrice e visualizzazione

Per attraversare l'intera matrice è necessario un ciclo annidato. Diamo un'occhiata al riempimento e all'output di una matrice usando l'esempio di un programma che richiede i valori degli elementi dalla tastiera e visualizza semplicemente la matrice piena sullo schermo.
#include <iostream>
utilizzando lo spazio dei nomi std;
int main() {
/* Dichiarazione di un array bidimensionale */
cost int N = 2, M = 3;
int A[N][M];
/* compila riga per riga gli elementi della matrice dalla tastiera */
int io, j;
per (i = 0; i < N; i++)
per (j = 0; j < M; j++)
cin>> A[i][j];

//Visualizza riga per riga tutti gli elementi della matrice sullo schermo
for (i = 0; i < N; i++) { //il ciclo esterno è responsabile dell'iterazione sulle righe
for (j = 0; j < M; j++) //loop per visualizzare gli elementi della stringa
cout << A[i][j] << " ";
cout << finel; //dopo aver visualizzato gli elementi della riga j-esima, ci spostiamo su una nuova riga
}
ritorno 0;
}
Nell'esempio sopra, sia il riempimento che la visualizzazione della matrice avvengono riga per riga (prima esaminiamo tutti i valori j - l'indice delle colonne, e solo allora l'indice della riga cambia - i)
Scambiando i loop (interno con esterno), è possibile riempire e/o produrre un array per colonne