¿Qué es una matriz?
Una matriz es una estructura de datos que almacena un elemento del mismo tipo de datos de forma secuencial. Una matriz de C ++ tiene un tamaño fijo.
Puede ver una matriz como una colección de variables de un tipo de datos similar. En lugar de declarar cada variable y asignarle un valor individualmente, puede declarar una variable (la matriz) y agregarle los valores de las distintas variables. Cada valor agregado a la matriz se identifica mediante un índice.
En este tutorial de C ++, aprenderá:
- ¿Qué es una matriz?
- ¿Por qué necesitamos matrices?
- Declarar una matriz en C ++
- Inicialización de matriz
- Tipos de matrices
- Matriz unidimensional
- Matriz multidimensional
- Matriz bidimensional
- Matriz tridimensional
- Puntero a una matriz
- Accediendo a los valores de una matriz
- Ventajas de una matriz en C ++
- Desventajas de una matriz en C ++
¿Por qué necesitamos matrices?
Las matrices son muy importantes en cualquier lenguaje de programación. Proporcionan una forma más conveniente de almacenar variables o una colección de datos de un tipo de datos similar juntos en lugar de almacenarlos por separado. Se accederá a cada valor de la matriz por separado.
Declarar una matriz en C ++
La declaración de matriz en C ++ implica indicar el tipo, así como el número de elementos que se almacenarán en la matriz. Sintaxis:
type array-Name [ array-Size ];
Reglas para declarar una matriz unidimensional en C ++.
- Tipo: el tipo es el tipo de elementos que se almacenarán en la matriz y debe ser un tipo de datos C ++ válido.
- Array-Name: El nombre de la matriz es el nombre que se asignará a la matriz.
- Tamaño de matriz : El tamaño de matriz es el número de elementos que se almacenarán en la matriz. Debe ser un número entero y mayor que 0.
Por ejemplo, puede crear una matriz denominada edad y almacenar las edades de 5 estudiantes de la siguiente manera:
int age[5];
La edad de la matriz almacenará 5 números enteros que representan las edades de diferentes estudiantes.
Inicialización de matriz
La inicialización de una matriz es el proceso de asignar / almacenar elementos a una matriz. La inicialización se puede realizar en una sola instrucción o una por una. Tenga en cuenta que el primer elemento de una matriz se almacena en el índice 0, mientras que el último elemento se almacena en el índice n-1, donde n es el número total de elementos de la matriz.
En el caso de la matriz de edad, el primer elemento se almacenará en el índice 0, mientras que el último elemento se almacenará en el índice 4.
Usemos la matriz de edad para demostrar cómo se puede realizar la inicialización de la matriz:
int age[5] = {19, 18, 21, 20, 17};
El número total de elementos dentro de {} no puede exceder el valor indicado dentro de []. El elemento 19 está en el índice 0, 18 en el índice 1, 21 en el índice 2, 20 en el índice 3 y 17 en el índice 4. Si no indica el número de elementos que se almacenarán en la matriz dentro de [], la matriz solo será lo suficientemente grande para contener los elementos agregados dentro de {}. Por ejemplo:
int age[] = {19, 18, 21, 20, 17};
La declaración anterior creará exactamente la misma matriz que la anterior. También puede asignar un elemento a una matriz usando su índice. Por ejemplo:
age[3] = 20;
La declaración anterior almacenará el valor 20 en el índice 3 de la matriz denominada edad. Esto significa que 20 será el 4 º elemento de la matriz.
Tipos de matrices
Hay dos tipos de matrices de C ++:
- Matriz unidimensional
- Matriz multidimensional
- Puntero a una matriz
Matriz unidimensional
Se trata de una matriz en la que los elementos de datos se organizan linealmente en una sola dimensión. Suele llamarse matriz 1-D. Sintaxis:
datatype array-name[size];
- El nombre de la matriz es el nombre de la matriz.
- El tamaño es la cantidad de elementos que se almacenarán en la matriz.
Por ejemplo:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluyendo el archivo de encabezado de iostream en nuestro código. Nos permitirá leer y escribir en la consola.
- Incluyendo el espacio de nombres std para usar sus clases y funciones sin llamarlo.
- Llamando a la función main () dentro de la cual se debe agregar la lógica del programa.
- Inicio del cuerpo de la función main ().
- Declarar una matriz llamada edad para almacenar 5 enteros. También se han inicializado los 5 enteros.
- Cree una variable entera x usando un bucle for.
- El comienzo del cuerpo del bucle for.
- Usando la variable de ciclo x para iterar sobre los valores de la edad del arreglo e imprimirlos en la consola. El "\ n" es un carácter de nueva línea y se imprime en una nueva línea después de cada iteración.
- Fin del cuerpo del for a loop.
- Fin del cuerpo de la función main ().
Matriz multidimensional
Se trata de una matriz en la que los elementos de datos se organizan para formar una matriz de matrices. Una matriz multidimensional puede tener cualquier número de dimensiones, pero las matrices bidimensionales y tridimensionales son comunes. Sintaxis:
datatype array-name[d1][d2][d3]… [dn];El nombre de la matriz es el nombre de la matriz que tendrá n dimensiones. Por ejemplo:
Matriz bidimensional
Una matriz 2D almacena datos en una lista con matriz 1-D. Es una matriz con filas y columnas. Para declarar una matriz 2D, use la siguiente sintaxis:
type array-Name [ x ][ y ];El tipo debe ser un tipo de datos C ++ válido. Vea una matriz 2D como una tabla, donde x denota el número de filas mientras que y denota el número de columnas. Esto significa que identifica cada elemento en una matriz 2D usando la forma a [x] [y], donde x es el número de filas ey el número de columnas a las que pertenece el elemento.
A continuación, se muestra un ejemplo de cómo inicializar una matriz 2D:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};En el ejemplo anterior, tenemos una matriz 2D que se puede ver como una matriz de 2x3. Hay 2 filas y 3 columnas. Se puede acceder al elemento 0 como [0] [1] porque está ubicado en la intersección de la fila indexada 0 y la columna indexada 1. Se puede acceder al elemento 3 como [1] [2] porque está ubicado en el intersección de la fila indexada 1 y la columna indexada 2.
Tenga en cuenta que simplemente agregamos llaves para diferenciar las diferentes filas de elementos. La inicialización también podría haberse realizado de la siguiente manera:
int a[2][3] = {0, 2, 1, 4, 3, 7};};El siguiente ejemplo de C ++ demuestra cómo inicializar y atravesar una matriz 2D:
#includeusing namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" < Producción:
Aquí hay una captura de pantalla del código anterior:
Explicación del código:
- Incluyendo el archivo de encabezado de iostream en nuestro código. Nos permitirá leer y escribir en la consola.
- Incluyendo el espacio de nombres std para usar sus clases y funciones sin llamarlo.
- Llamar a la función main () dentro de la cual se debe agregar el código.
- Inicio del cuerpo de la función main ().
- Un comentario. El compilador de C ++ omitirá esto.
- Declarar una matriz 2D de 3 filas y 2 columnas. También se han agregado elementos a la matriz.
- Un comentario. El compilador de C ++ omitirá esto.
- Creando una variable i usando un bucle for a. Esta variable iterará sobre los índices de fila de la matriz.
- Creando una variable j usando un bucle for a. Esta variable iterará sobre los índices de columna de la matriz.
- Inicio del cuerpo de los bucles.
- Imprima los valores de las variables i y j en la consola entre corchetes en la consola.
- Imprima el valor almacenado en el índice [i] [j] de la matriz a.
- Fin del cuerpo de los bucles.
- La función main () debería devolver un valor entero si el programa funciona bien.
- Fin del cuerpo de la función main ().
Matriz tridimensional
Una matriz 3D es una matriz de matrices. Cada elemento de una matriz 3D se identifica mediante un conjunto de 3 índices. Para acceder a los elementos de una matriz 3D, usamos tres bucles for. Por ejemplo:
#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";} Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluyendo el archivo de encabezado de iostream en nuestro código. Nos permitirá leer y escribir en la consola.
- Incluyendo el espacio de nombres std para usar sus clases y funciones sin llamarlo.
- Llamando a la función main () dentro de la cual se debe agregar la lógica del programa.
- Inicio del cuerpo de la función main ().
- Declarar una matriz 3D denominada de tamaño 2x3x2. Los valores de la matriz también se han inicializado.
- Accediendo al elemento almacenado en el índice [0] [1] [0] de la matriz e imprimiéndolo en la consola.
- Accediendo al elemento almacenado en el índice [0] [1] [1] de la matriz e imprimiéndolo en la consola.
- Fin del cuerpo de la función main ().
Puntero a una matriz
Un puntero es una variable que contiene una dirección. Aparte de usar un puntero para almacenar la dirección de una variable, podemos usarlo para almacenar la dirección de una celda de matriz. El nombre de una matriz apunta constantemente a su primer elemento. Considere la declaración dada a continuación:
int age[5];La edad es un puntero a $ edad [0], la dirección del primer elemento de una matriz denominada edad. Considere el siguiente ejemplo:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Producción:
Tenga en cuenta que el primer valor de la salida anterior puede devolver un valor diferente dependiendo de la dirección asignada al primer elemento de la matriz en la memoria de su computadora.
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluyendo el archivo de encabezado de iostream en nuestro código. Nos permitirá leer y escribir en la consola.
- Incluyendo el espacio de nombres std para usar sus clases y funciones sin llamarlo.
- Llamando a la función main () dentro de la cual se debe agregar la lógica del programa.
- Inicio del cuerpo de la función main ().
- Declarar una variable de puntero llamada * john.
- Declarar una matriz de enteros llamada edad para almacenar 5 enteros. También se han inicializado los valores de los enteros.
- Asignar a la variable john el valor de la dirección del elemento almacenado en el primer índice de la matriz age.
- Imprimiendo el valor de la variable john, que es la dirección del elemento almacenado en el primer índice de la matriz age.
- Imprimiendo el primer valor almacenado en la matriz age.
- Fin del cuerpo de la función main ().
Los nombres de las matrices se pueden usar como punteros constantes y lo contrario también es cierto. Esto significa que puede acceder al valor almacenado en el índice 3 de la edad de la matriz con * (edad + 3). Por ejemplo:
#includeusing namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;} Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluyendo el archivo de encabezado de iostream en nuestro código. Nos permitirá leer y escribir en la consola.
- Incluyendo el espacio de nombres std para usar sus clases y funciones sin llamarlo.
- Llamando a la función main () e inicio del cuerpo de la función main ().
- Un comentario. El compilador de C ++ omitirá esto.
- Declarar una matriz llamada edad para almacenar 5 enteros.
- Creando un puntero entero p.
- Asignar p el valor de la dirección del primer elemento de la edad de la matriz.
- Un comentario. El compilador de C ++ omitirá esto.
- Imprime algo de texto en la consola.
- Crea un número entero x usando un para un bucle. El {marca el comienzo del cuerpo del bucle for.
- Imprime los valores de x combinados con algún otro texto en la consola.
- Imprime los valores de * (p + x) en la consola.
- Fin del cuerpo del for a loop.
- Imprime algo de texto en la consola.
- Crea una variable x usando un para un bucle. El {marca el comienzo del cuerpo del bucle for.
- Imprime los valores de x de 0 a 4 junto con otro texto.
- Imprime los valores de * (edad + x).
- Fin del cuerpo del bucle for.
- Devuelve el valor si el programa se ejecuta correctamente.
- Fin del cuerpo de la función main ().
Accediendo a los valores de una matriz
Se accede a los elementos de una matriz utilizando sus respectivos índices. El índice del elemento al que se accede se agrega entre corchetes [] inmediatamente después del nombre de la matriz. Por ejemplo:
int john = age[2];En el ejemplo anterior, simplemente indicamos que la edad de John se almacena en el índice 2 de la matriz denominada edad. Esto significa que la edad de John es la 3 rd valor en la era de la matriz. Aquí hay un ejemplo completo de C ++ que muestra cómo acceder e imprimir este valor:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Producción:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluyendo el archivo de encabezado de iostream en nuestro código. Nos permitirá leer y escribir en la consola.
- Incluyendo el espacio de nombres std para usar sus clases y funciones sin llamarlo.
- Llamar a la función main () dentro de la cual se debe agregar el código.
- Inicio de un cuerpo de la función main ().
- Declarar una matriz llamada edad para almacenar 5 elementos enteros.
- Accediendo al valor almacenado en el índice 2 de la edad de la matriz y almacenando su valor en una variable llamada john.
- Imprimir el valor de la variable john en la consola junto con otro texto.
Ventajas de una matriz en C ++
A continuación, se muestran las ventajas y los beneficios de usar Array en C ++:
- Los elementos de la matriz se pueden atravesar fácilmente.
- Fácil de manipular los datos de la matriz.
- Se puede acceder a los elementos de la matriz de forma aleatoria.
- Las matrices facilitan la optimización del código; por lo tanto, podemos realizar mucho trabajo usando menos código.
- Fácil de ordenar los datos de la matriz.
Desventajas de una matriz en C ++
- Una matriz tiene un tamaño fijo; por lo tanto, no podemos agregarle nuevos elementos después de la inicialización.
- Asignar más memoria de la requerida conduce a un desperdicio de espacio de memoria, y una menor asignación de memoria puede crear un problema.
- El número de elementos que se almacenarán en una matriz debe conocerse de antemano.
Resumen
- Una matriz es una estructura de datos que almacena elementos del mismo tipo de datos.
- Los elementos de la matriz se almacenan secuencialmente.
- Los elementos de la matriz se indican mediante sus respectivos índices. El primer elemento está en el índice 0, mientras que el último elemento está en el índice n-1, donde es el número total de elementos de la matriz.
- La declaración de una matriz implica definir los tipos de datos de los elementos de la matriz, así como el número de elementos que se almacenarán en la matriz.
- Una matriz unidimensional almacena elementos de forma secuencial.
- Una matriz bidimensional almacena elementos en filas y columnas.
- Una matriz tridimensional es una matriz de matrices.
- Los elementos se pueden agregar a una matriz usando sus índices.
- Se accede a los elementos de matriz utilizando sus índices.
- Una matriz multidimensional tiene más de una dimensión.
- El nombre de la matriz apunta a su primer elemento.
- Las matrices tienen un tamaño fijo, lo que significa que no se pueden agregar nuevos elementos a la matriz después de su inicialización.