Una matriz es un tipo de estructura de datos que se utiliza para almacenar la colección de elementos del mismo tipo de datos que se encuentran en ubicaciones de memoria contiguas. Las matrices pueden ser unidimensionales o multidimensionales según la cantidad de direcciones en las que puede crecer la matriz. En este artículo, estudiaremos matrices multidimensionales, como matrices bidimensionales y matrices tridimensionales.
¿Qué es una matriz multidimensional en C++?
Una matriz multidimensional es una matriz con más de una dimensión. Es la colección homogénea de elementos a la que se accede a cada elemento mediante múltiples índices.
Declaración de matriz multidimensional
datatype arrayName [ size1][size2]...[sizeN];>
dónde,
- tipo de datos: Tipo de datos que se almacenarán en la matriz.
- nombre de matriz: Nombre de la matriz.
- tamaño1, tamaño2,…, tamañoN: Tamaño de cada dimensión.
Ejemplo:
Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>
Tamaño de una matriz multidimensional
El tamaño de una matriz es igual al tamaño del tipo de datos multiplicado por el número total de elementos que se pueden almacenar en una matriz. Podemos calcular el número total de elementos en una matriz multiplicando el tamaño de cada dimensión de una matriz multidimensional.
Por ejemplo:
int arr1[2][4];>
- La matriz int arreglo1[2][4] puede almacenar el total (2*4) = 8 elementos.
- En C++ el tipo de datos int ocupa 4 bytes y tenemos 8 elementos en la matriz 'arr1' del tipo int.
- Tamaño total = 4*8 = 32 bytes .
int arr2[2][4][8];>
- matriz entera arreglo2[2][4][8] Puede almacenar un total (2*4*8) = 64 elementos.
- El tamaño total de ' arr2 ‘ = 64*4 = 256 bytes .
Para verificar el cálculo anterior podemos usar tamaño de() Método para encontrar el tamaño de una matriz.
C++
matriz java para listar
// C++ program to verify the size of multidimensional> // arrays> #include> using> namespace> std;> > int> main()> {> >// creating 2d and 3d array> >int> arr1[2][4];> >int> arr2[2][4][8];> > >// using sizeof() operator to get the size of the above> >// arrays> >cout <<>'Size of array arr1: '> <<>sizeof>(arr1)> ><<>' bytes'> << endl;> >cout <<>'Size of array arr2: '> <<>sizeof>(arr2)> ><<>' bytes'>;> > >return> 0;> }> |
>
>Producción
Size of array arr1: 32 bytes Size of array arr2: 256 bytes>
Los arreglos multidimensionales más utilizados son:
- Matriz bidimensional
- Matriz tridimensional
Matriz bidimensional (o matriz 2D)
Una matriz bidimensional en C++ es una colección de elementos organizados en filas y columnas. Se puede visualizar como una tabla o un grid, donde se accede a cada elemento mediante dos índices: uno para la fila y otro para la columna. Al igual que una matriz unidimensional, los índices de una matriz bidimensional también varían de 0 a n-1 tanto para filas como para columnas.

Sintaxis de matriz 2D
tipo_datos nombre_matriz[ norte ][ metro ];
Dónde,
- norte: Número de filas.
- metro: Número de columnas.
Podemos declarar una matriz 2D de forma estática y dinámica. En la declaración estática, la memoria se asigna durante el tiempo de compilación y en la memoria dinámica se asigna durante el tiempo de ejecución. Lo anterior es la sintaxis para la declaración estática de una matriz 2D. Para saber cómo declarar dinámicamente la matriz 2D, consulte este artículo.
Inicialización de matrices bidimensionales en C++
A continuación se detallan diferentes formas de inicializar una matriz 2D:
- Usando la lista de inicializadores
- Usando bucles
1. Inicialice la matriz 2D usando la lista de inicializadores
Podemos inicializar una matriz 2D usando una lista de inicializadores de dos maneras. A continuación se muestra el primer método para inicializar una matriz 2D utilizando una lista de inicializadores.
Primer método: La siguiente matriz tiene 2 filas y 4 columnas. Los elementos se rellenan de manera que los primeros 4 elementos se rellenan en la primera fila y los siguientes 4 elementos se rellenan en la segunda fila.
int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};> Segundo método: La siguiente forma es la forma más limpia de inicializar una matriz 2D: la lista anidada representa los elementos en una fila y la cantidad de elementos dentro de ella es igual a la cantidad de columnas en una matriz 2D. El número de listas anidadas representa el número de columnas.
int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};> 2. Inicialización de una matriz 2D usando Loops
También podemos inicializar una matriz 2D usando bucles. Para inicializar la matriz 2D tenemos que usar dos bucles anidados y los bucles anidados son iguales a la dimensión. Por ejemplo, para inicializar una matriz 3D tenemos que usar tres bucles anidados. Veamos un ejemplo.
Ejemplo: En el siguiente ejemplo, inicializamos la matriz 2D con 1. El bucle externo se usa para rastrear filas i=0 significa la primera fila debido a que 0 indexa de manera similar j=0 significa la primera columna y combina esto x [0][0] representa la primera celda de la matriz 2D.
int x[2][4]; for(int i = 0; i <2; i++){ for(int j = 0; j <4; j++){ x[i][j] = 1; } }> Accediendo a elementos de matrices bidimensionales en C++
Podemos acceder a los elementos de una matriz bidimensional utilizando índices de filas y columnas. Es similar a la posición del elemento de la matriz, pero la única diferencia es que aquí la indexación comienza desde 0.
Sintaxis:
array_name[i][j];>
dónde,
- i: Índice de fila.
- j: Índice de la columna.
Ejemplo: A continuación se muestra el índice de elementos de la segunda fila y tercera columna.
int x[1][2];>
Entendamos esto usando código imprimiendo elementos de una matriz 2D.
Ejemplo de matriz 2D
C++
// c++ program to illustrate the two dimensional array> #include> using> namespace> std;> > int> main()> {> > >int> count = 1;> > >// Declaring 2D array> >int> array1[3][4];> > >// Initialize 2D array using loop> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >array1[i][j] = count;> >count++;> >}> >}> > >// Printing the element of 2D array> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >cout << array1[i][j] <<>' '>;> >}> >cout << endl;> >}> > >return> 0;> }> |
>
>Producción
1 2 3 4 5 6 7 8 9 10 11 12>
Explicación: En el código anterior, inicializamos el recuento en '1' y declaramos una matriz 2D con 3 filas y 4 columnas, luego inicializamos la matriz con el valor de recuento y aumentamos el valor de recuento en cada iteración del ciclo. Luego, estamos imprimiendo la matriz 2D usando un bucle anidado y podemos ver en el siguiente resultado que hay 3 filas y 4 columnas.
Java convierte una cadena a un número entero
Complejidad del tiempo: En M)
Complejidad espacial: En M)
donde n es el número de filas y m es el número de columnas.
Matriz tridimensional en C++
La matriz 3D es una estructura de datos que almacena elementos en una estructura tridimensional similar a un cuboide. Puede visualizarse como una colección de múltiples matrices bidimensionales apiladas una encima de otra. Cada elemento de una matriz 3D se identifica por sus tres índices: el índice de fila, el índice de columna y el índice de profundidad.

Declaración de matriz tridimensional en C++
Para declarar una matriz 3D en C++, necesitamos especificar su tercera dimensión junto con las dimensiones 2D.
Sintaxis:
dataType arrayName[d][r];>
- tipo de datos: Tipo de datos a almacenar en cada elemento.
- nombre de matriz: Nombre de la matriz
- d: Número de matrices 2D o Profundidad de la matriz.
- r: Número de filas en cada matriz 2D.
- C: Número de columnas en cada matriz 2D.
Ejemplo:
int array[3][5][2];>
Inicialización de una matriz tridimensional en C++
Para inicializar la matriz 3D en C++, seguimos los mismos métodos que utilizamos para inicializar la matriz 2D. En una matriz 3D, tenemos una dimensión más, por lo que tenemos que agregar una lista anidada más de elementos.
Una matriz 3D en C se puede inicializar usando:
- Lista de inicializadores
- Bucles
Inicialización de 3D Array usando la lista de inicializadores
Método 1: En este método, tenemos que escribir el número total de elementos dentro de llaves, y cada elemento se coloca en su posición de acuerdo con la dimensión dada.
int x[3][5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30};> Método 2 (mejor) : En este método, hemos dividido los elementos mediante listas anidadas y es fácil de leer.
int x[3][5][2] = { { {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} } , { {10, 11}, {12, 13}, {14, 15}, {16, 17}, {18, 19} } , { {20, 21}, {22, 23}, {24, 25}, {26, 27}, {28, 30} } , } ;> Inicialización de 3D Array usando Loops
Este método es lo mismo que inicializar una matriz 2D usando bucles con un bucle anidado más para la tercera dimensión.
int x[3][5][2]; for (int i = 0; i <3; i++) { for (int j = 0; j <5; j++) { for (int k = 0; k <2; k++) { x[i][j][k] = (some_value) ; } } }> Accediendo a elementos en Three-Dimensional Array en C++
Acceder a elementos en matrices 3D es tan simple como acceder a elementos en matrices 2D. Aquí lo que tenemos que hacer trabajo extra es agregar un bucle anidado más para realizar un seguimiento de la tercera dimensión.
C++
// C++ program to illustrate the 3d array> #include> using> namespace> std;> > int> main()> {> > >int> count = 0;> >// declaring 3d array> >int> x[2][2][3];> > >// initializing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >x[i][j][k] = count;> >count++;> >}> >}> >}> > >// printing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >printf>(>'x[%d][%d][%d] = %d
'>, i, j, k,> >x[i][j][k]);> >count++;> >}> >}> >}> > >return> 0;> }> |
>
>Producción
burak ozcivit
x[0][0][0] = 0 x[0][0][1] = 1 x[0][0][2] = 2 x[0][1][0] = 3 x[0][1][1] = 4 x[0][1][2] = 5 x[1][0][0] = 6 x[1][0][1] = 7 x[1][0][2] = 8 x[1][1][0] = 9 x[1][1][1] = 10 x[1][1][2] = 11>
Explicación: En el código anterior, inicializamos la matriz 3D usando el bucle como se explicó anteriormente con el número del 0 al 7 usando la variable de conteo y luego accedimos a los elementos usando el mismo bucle usado para inicializar la matriz 3D. La única diferencia es que en lugar de asignar un elemento en una posición particular, diga x[0][0][1]=1 Estamos imprimiendo el elemento almacenado en esa ubicación como se ve en el siguiente resultado.