Matrices multidimensionales de C++
Arreglos multidimensionales de C++
En este tutorial, aprenderemos sobre arreglos multidimensionales en C++. Más específicamente, cómo declararlos, acceder a ellos y usarlos de manera eficiente en nuestro programa.
En C++, podemos crear una matriz de una matriz, conocida como matriz multidimensional. Por ejemplo:
int x[3][4];
Aquí, x es una matriz bidimensional. Puede contener un máximo de 12 elementos.
Podemos pensar en esta matriz como una tabla con 3 filas y cada fila tiene 4 columnas como se muestra a continuación.
Las matrices tridimensionales también funcionan de manera similar. Por ejemplo:
float x[2][4][3];
Esta matriz x puede contener un máximo de 24 elementos.
Podemos averiguar el número total de elementos en la matriz simplemente multiplicando sus dimensiones:
2 x 4 x 3 = 24
Inicialización de matriz multidimensional
Como una matriz normal, podemos inicializar una matriz multidimensional en más de una forma.
1. Inicialización de matriz bidimensional
int test[2][3] = {2, 4, 5, 9, 0, 19};
El método anterior no es el preferido. A continuación se proporciona una mejor manera de inicializar esta matriz con los mismos elementos de la matriz:
int test[2][3] = { {2, 4, 5}, {9, 0, 19}};
Esta matriz tiene 2 filas y 3 columnas, por lo que tenemos dos filas de elementos con 3 elementos cada una.
2. Inicialización de matriz tridimensional
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};
Esta no es una buena manera de inicializar una matriz tridimensional. Una mejor manera de inicializar esta matriz es:
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} }
};
Observe las dimensiones de esta matriz tridimensional.
La primera dimensión tiene el valor 2
. Entonces, los dos elementos que componen la primera dimensión son:
Element 1 = { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} } Element 2 = { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }
La segunda dimensión tiene el valor 3
. Observe que cada uno de los elementos de la primera dimensión tiene tres elementos cada uno:
{3, 4, 2, 3}, {0, -3, 9, 11} and {23, 12, 23, 2} for Element 1. {13, 4, 56, 3}, {5, 9, 3, 5} and {5, 1, 4, 9} for Element 2.
Finalmente, hay cuatro int
números dentro de cada uno de los elementos de la segunda dimensión:
{3, 4, 2, 3} {0, -3, 9, 11} ... .. ... ... .. ...
Ejemplo 1:matriz bidimensional
// C++ Program to display all elements
// of an initialised two dimensional array
#include <iostream>
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;
}
Salida
test[0][0] = 2 test[0][1] = -5 test[1][0] = 4 test[1][1] = 0 test[2][0] = 9 test[2][1] = 1
En el ejemplo anterior, hemos inicializado un int
bidimensional matriz llamada prueba que tiene 3 "filas" y 2 "columnas".
Aquí, hemos usado el for
anidado bucle para mostrar los elementos de la matriz.
- el bucle exterior de
i == 0
ai == 2
acceder a las filas de la matriz - el bucle interno de
j == 0
aj == 1
acceder a las columnas de la matriz
Finalmente, imprimimos los elementos de la matriz en cada iteración.
Ejemplo 2:Toma de entrada para matriz bidimensional
#include <iostream>
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 < 3; ++j) {
cin >> 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;
}
Salida
Enter 6 numbers: 1 2 3 4 5 6 The numbers are: numbers[0][0]: 1 numbers[0][1]: 2 numbers[0][2]: 3 numbers[1][0]: 4 numbers[1][1]: 5 numbers[1][2]: 6
Aquí, hemos usado un for
anidado loop para tomar la entrada de la matriz 2d. Una vez que se ha tomado toda la entrada, hemos usado otro for
anidado bucle para imprimir los miembros de la matriz.
Ejemplo 3:matriz tridimensional
// C++ Program to Store value entered by user in
// three dimensional array and display it.
#include <iostream>
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;
}
Salida
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
El concepto básico de imprimir elementos de una matriz 3D es similar al de una matriz 2D.
Sin embargo, dado que estamos manipulando 3 dimensiones, usamos un bucle for anidado con 3 bucles en total en lugar de solo 2:
- el bucle exterior de
i == 0
ai == 1
accede a la primera dimensión de la matriz - el bucle medio desde
j == 0
aj == 2
accede a la segunda dimensión de la matriz - el bucle más interno de
k == 0
ak == 1
accede a la tercera dimensión de la matriz
Como podemos ver, la complejidad de la matriz aumenta exponencialmente con el aumento de las dimensiones.
Lenguaje C
- Matrices de C#
- Matriz multidimensional de C#
- Matriz irregular de C#
- Conversión de tipo C++
- Operadores de C++
- Comentarios de C++
- Pasar matriz a una función en programación C++
- Matrices de copia de Java
- Matrices en C++ | Declarar | Inicializar | Ejemplos de puntero a matriz
- C++ Asignación dinámica de arreglos con ejemplo
- MATLAB - Matrices