matriz 2D

Una matriz bidimensional es una matriz que tiene dos índices para cada elemento (a menudo, estas matrices se denominan con una palabra: matriz). 
Es conveniente almacenar y procesar varios datos tabulares en una matriz. Al igual que cualquier tabla se compone de filas y columnas, las matrices se componen de filas y columnas.
Para mayor claridad, puede representar una matriz como esta:
Aunque, de hecho, en la memoria de la computadora, la matriz se verá así:

Para usar una matriz en un programa, debe declararse como una matriz regular, especificando el tipo de datos y dos tamaños (números o constantes). También es posible (y deseable) establecer inmediatamente los valores iniciales. Por ejemplo, restablecer todos los elementos.
Ejemplo 1: Declarar una matriz de 3 filas y 3 columnas con valores iniciales arbitrarios intA[3][3] = {{0,1,2}, {3,4,5}, {6,7,8} }; Ejemplo 2: Declarar una matriz de 5 filas y 10 columnas (el tamaño se establece a través de una constante) con valores iniciales cero const int N = 5, M = 10; doble B[N][M] = {}; Para referirnos a un elemento específico de la matriz, usamos dos pares de corchetes, en el primer paréntesis indicamos el número de fila, en el segundo, el número de columna.
Ejemplo:   A[0][2] = 100; //la numeración de filas y columnas comienza desde cero

Llenar la matriz y mostrarla

Para atravesar toda la matriz, se necesita un bucle anidado. Veamos cómo llenar y generar una matriz usando el ejemplo de un programa que solicita los valores de los elementos desde el teclado y simplemente muestra la matriz llena en la pantalla. #incluye <iostream> utilizando el espacio de nombres estándar; int principal() { /* Declarar un arreglo bidimensional */ const int N = 2, M = 3; int A[N][M]; /* rellena los elementos de la matriz desde el teclado linea a linea */ i, j; para (i = 0; i < N; i++) para (j = 0; j < M; j++) cin>> A[i][j]; //Mostrar todos los elementos de la matriz en la pantalla línea por línea for (i = 0; i < N; i++) { //el bucle externo es responsable de iterar sobre las filas for (j = 0; j < M; j++) //bucle para mostrar los elementos de la cadena cout << A[i][j] << " "; cout << fin; //después de mostrar los elementos de la j-ésima línea, pasamos a una nueva línea } devolver 0; } En el ejemplo anterior, tanto el llenado como la visualización de la matriz ocurren fila por fila (primero revisamos todos los valores j - el índice de las columnas, y solo luego cambia el índice de la fila - i)
Al intercambiar bucles (internos con externos), puede llenar y/o generar una matriz por columnas