Arreglos multidimensionales
En C++ podemos concebir un arreglo como una variable que almacena a otras variables. Podemos hacer arreglos de cualquier tipo de variable, incluso de otros arreglos. Cuando hacemos que cada locación de un arreglo contenga otro arreglo, estamos hablando de arreglos de dos dimensiones que son más comúnmente llamados matrices.
- Declaración de una matriz
- Arreglos de más de dos dimensiones
- Dimensiones máximas
Declaración de una matriz
Como ya se decía, las matrices las podemos ver como un arreglo de arreglos o un arreglo de dos dimensiones. Un arreglo sencillo de enteros de tamaño \(N\) se puede declarar como int arr[N];
. Si queremos hacer un arreglo de de tamaño \(M\) de arreglos de tamaño \(N\) de enteros entonces habría que hacer algo como int mat[M][N];
.
Si buscamos una representación gráfica un arreglo y de una matriz entonces podríamos pensar en un arreglo como una lista (o un renglón) y una matriz como una tabla.
Nota que el arreglo arr
está declarando \(N\) variables y la matriz mat
está declarando \(NM\) variables, es decir, está declarando \(M\) arreglos de tamaño \(N\) cada uno. Nos referimos al primer arreglo como mat[0][];
y al primer elemento del primer arreglo como mat[0][0];
. Si queremos referirnos al quinto elemento del tercer arreglo sería mat[2][4];
. Nótese que no podemos hacer algo como cout << mat[x]
pues nos estaríamos refiriendo a todo un arreglo, no a un solo elemento.
Nota que siempre puedes referirte a los arreglos como las columnas o como las filas de manera prácticamente indistinta, pero es muy importante que mantengas el mismo criterio en todo el programa. Si estás manejando int mat[x][y]
como una matriz de \(x\) columnas por \(y\) filas tienes que manejarlo así siempre en tu implementación y del mismo modo, si quieres considerar esa misma matriz como una matriz de \(x\) filas por \(y\) columnas tienes que mantenerte así siempre. Lo mismo si quieres considerarlo como un arreglo de \(x\) arreglos de tamaño \(y\) o al revés.
Arreglos de más de dos dimensiones
Siempre puedes declarar arreglos de más de dos dimensiones. Puedes agregar hasta 8 dimensiones en un mismo arreglo. Esta clase de implementaciones son útiles en diferentes situaciones, por ejemplo, si quieres representar un calendario en donde debas guardar algún dato para cada día de cada mes de algunos años, en este ejemplo puedes usar un arreglo de tres dimensiones.
Nota que puedes seguir la misma forma de pensamiento que te propongo sobre verlo como un arreglo de arreglos de arreglos de alguna clase de variable. Nota que todos los elementos de estos arreglos multidimensionales de estos ejemplos son de tipo entero, aunque puedes hacerlo de cualquier otro tipo.
Dimensiones máximas
No sólo hay que considerar que máximo podemos declarar un arreglo de ocho dimensiones. Tienes que recordar siempre la cantidad de memoria que estás utilizando. Ya se mencionaba antes que un arreglo de \(10^6\) enteros de \(32\) bits necesita alrededor de \(32\) mb de memoria. Si declaras una matriz de \(1000 \times 1000\) entonces estarías declarando \(10^6\) variables también. Nota que no importa como manejes el tamaño de cada dimensión, lo que importa es el tamaño total del arreglo en cuestión. De la misma forma un arreglo de tres dimensiones de \(100 \times 100 \times 100\) está declarando un millón de variables.
Es importante también que tengas en cuenta que es muy raro (demasiado improbable) que un problema requiera que declares un arreglo de muchas dimensiones con muchas variables en cada una. Si tu solución requiere una matriz de \(10000 \times 10000\) entonces es muy probable que esa no sea una respuesta correcta.
Cita esta página
Include Poetry - Code. (2020, 4 de enero). Arreglos multidimensionales. Obtenido de https://www.include-poetry.com/Code/C++/Estructuras/Arreglos/Multidimensionales/