C ++ Cambiar el tamaño de la matriz

C ++ Cambiar el tamaño de la matriz
Una vez que se ha asignado una matriz, no existe un mecanismo incorporado para cambiarla en el lenguaje de programación de C ++. Por lo tanto, podemos evitar este problema generando dinámicamente una nueva matriz, copiando el contenido y luego eliminando la matriz vieja. Este artículo se centra en cómo asignar la memoria dinámicamente en una matriz y ajustar el tamaño de la matriz según la entrada del usuario. Es una estrategia muy importante en la programación, ya que asegura la utilización de la memoria eficiente. Cuando intentamos insertar un nuevo elemento en una matriz dinámica, aumenta automáticamente hasta que no haya más almacenamiento para el nuevo elemento. Típicamente, la región duplica en tamaño.

¿Qué es una matriz dinámica??

Una matriz dinámica es idéntica a una matriz estándar en apariencia, pero su tamaño se puede cambiar mientras el código se ejecuta. Los componentes de la matriz dinámica ocupan un bloque de memoria contiguo. Después de definir una matriz, no es posible modificar su tamaño. En contraste, una matriz dinámica no es como una matriz estática. Incluso después de haber sido ocupado, una matriz dinámica puede extender su tamaño. Los elementos se pueden agregar constantemente en la posición final de la matriz dinámica utilizando el espacio reservado hasta que esté completamente ocupado.

Factores clave de la matriz dinámica en C ++:

El rendimiento de la matriz está determinado por su tamaño inicial y factor de crecimiento. Tome nota de los siguientes puntos:

  • Si una matriz es de tamaño modesto y tiene un factor de crecimiento más lento, continuará reasignando la memoria con más frecuencia. Como resultado, el rendimiento de la matriz sufrirá.
  • Si una matriz es más grande y tiene un alto factor de crecimiento, tendrá una gran cantidad de memoria no utilizada. Como resultado, los procesos de cambio de tamaño pueden llevar más tiempo. El rendimiento de la matriz también sufrirá como resultado

Ejemplo 1:

La nueva palabra clave se utiliza para construir una matriz dinámica en el siguiente programa C ++. Después de eso, la palabra clave devuelve una referencia al primer elemento. La sección del encabezado tiene el archivo de biblioteca iOStream incluido para usar sus métodos. También se incluye el archivo del espacio de nombres que permite utilizar su clase sin ser llamado. Luego se invoca la función principal en la que hemos declarado dos variables "P" y "Número" de tipo de datos enteros.

En el siguiente paso, la instrucción Cout imprime la declaración "Ingrese los números". El comando CIN toma la entrada del usuario y la asigna a la variable "NUM". El siguiente paso tiene la variable de puntero "matriz" que contiene los valores enteros de la variable "num". El número de entrada del usuario se imprimirá utilizando el comando cout. Entonces nosotros tenemos Para la condición de bucle que itera sobre cada elemento ingresado por el usuario. La matriz como "matriz" se declara en el comando CIN que lee la entrada ingresada por el usuario.

Después de la terminación del bucle, la instrucción "sus números es" se imprimirá en la pantalla de la consola. De nuevo, tenemos un Para la condición de bucle Pero esta vez esto Para la condición de bucle itera sobre una variedad de elementos. Tenga en cuenta que hemos permitido a un usuario establecer el tamaño de la matriz. Como resultado, el tamaño de la matriz se define en tiempo de ejecución.

#incluir
usando el espacio de nombres STD;
int main ()
int p, num;
cout<< "Enter the numbers:" num;
int *array = new int (num);
cout<< "Enter " << num << " numbers" <para (p = 0; p> matriz [p];

cout<< "Your numbers are: ";
para (p = 0; p < num; p++)
cout<< Array[p] << " ";

cout<< "\n ";
regresar 0;

Se le solicita al usuario que ingrese el número en la solicitud de la consola. Después de la entrada, el número para el tamaño de la matriz muestra los números de tamaño de matriz especificado. La matriz resultante se muestra en la consola indicada de Ubuntu.

Ejemplo 2:

Se puede usar una lista de inicializador para establecer una matriz dinámica. Ilustramos esto con un ejemplo para ver cómo funciona esto. Primero, agregamos el archivo IOSTream y el archivo de espacio de nombres STD en la sección del encabezado. Después de eso, invocamos la función principal. La lógica del programa debe incluirse en el cuerpo de la función. Luego hemos definido una variable como "A" del tipo de datos enteros.

Después de declarar la variable entera, tenemos una declaración de matriz dinámica como "arr" que utiliza una lista de inicializador. Tenemos cuatro entradas enteras en la matriz. El comando Cout imprimirá la declaración "Elementos de matriz" antes de mostrar los elementos de la matriz.

En el siguiente paso, tenemos A For Loop que itera sobre elementos presentes en una matriz específica. A través del comando cout, los elementos de la matriz dada se imprimirán en la solicitud de la consola.

#incluir
usando el espacio de nombres STD;
int main (void)
int a;
int *arr new int [4] 9, 23, 1, 17;
cout<< "Elements of Array: " <para (a = 0; a < 4; a++)
cout<
regresar 0;

El siguiente es el resultado que obtuvimos de la ejecución del programa anterior:

Ejemplo 3:

Una vez que se ha logrado el objetivo de la matriz dinámica, debe eliminarse de la memoria de la computadora. La expresión de eliminación se puede usar para hacer esto que el espacio de memoria es gratuito y usado para almacenar datos adicionales. Tenemos que usar Eliminar [] para eliminar la matriz dinámica de la memoria del sistema. El soporte cuadrado [] con la palabra clave eliminar comanda la CPU para eliminar muchas variables en lugar de solo una.

Comencemos la implementación del programa. Hemos importado el archivo requerido en la sección del encabezado. Entonces, la función principal se llama. Las variables enteras "i" y "no" se declaran en la función principal. Después de definir estas variables, tenemos el "número de entrada" de la instrucción CoUT que es para que el usuario ingrese el número. Obtenemos un número del usuario y lo guardamos en la variable "no" usando el comando CIN.

Luego, declare una variable de puntero "myarr" que almacena los enteros en la memoria. El número ingresado por el usuario se imprimirá en el segundo comando cout de este programa. El en bucle La declaración se utiliza para la iteración sobre el número de usuario ingresado. Al final, hemos construido la declaración Eliminar [] que borra la matriz dada en el programa y libera espacio en la memoria.

#incluir
usando el espacio de nombres STD;
int main ()
int i, no;
cout<< "Input Number:" no;
int *myarr = new int (no);
cout<< "Input " << no << " numbers" <para (i = 0; i> myarr [i];

cout<< "Input numbers are: ";
para (i = 0; i< no; i++)
cout<
cout<eliminar [] myarr;
regresar 0;

Tras la ejecución del programa, obtuvimos el siguiente resultado. Cuando se finalice el programa, se eliminará la matriz.

Ejemplo 4:

Podemos definir dinámicamente una matriz de puntero del tamaño "x" y luego asignar la memoria del tamaño "y" dinámicamente para cada culo de fila que se ve en el siguiente ejemplo. Al principio, hemos definido la matriz en la sección del encabezado. En el siguiente paso, tenemos la función principal donde tenemos una variable de puntero "ARR". La variable del puntero contiene la matriz de tamaño "x".

Ahora el para la declaración de bucle asigna cada fila un tamaño de memoria "y". Luego, tenemos un bucle anidado para asignar valores dinámicamente a una memoria que ha sido asignada. La función RAND generará un número aleatorio para la matriz 2D. En el siguiente bucle anidado, hemos impreso la matriz 2D a través de la declaración STD :: Cout. Tras la terminación del programa, la matriz 2D especificada se borrará del espacio de memoria asignado a medida que hemos usado Eliminar [] al final.

#incluir
#Define x 3
#Define y 4
int main ()

int ** arr = new int*[x];
para (int i = 0; i< X; i++)
arr [i] = new int [y];

para (int i = 0; i< X; i++)

para (int j = 0; j < Y; j++)
arr [i] [j] = rand () % 10;


para (int i = 0; i< X; i++)

para (int j = 0; j < Y; j++)
std :: cout<
std :: cout<< std::endl;

para (int i = 0; i< X; i++)
eliminar [] arr [i];

eliminar [] arr;
regresar 0;

La matriz 2D se ha generado y se muestra en la pantalla de la consola a continuación.

Conclusión

Eso es sobre la matriz redimensionada en C++. Llegamos a saber que las matrices C ++ no tienen un método incorporado para cambiar el tamaño. Pero a través de la asignación de matriz dinámica en C ++, el tamaño de la matriz se puede modificar. Hemos ilustrado en el ejemplo para cambiar el tamaño de la matriz dinámica utilizando una nueva palabra clave. Además, podemos usar una lista de inicializador para inicializar una matriz. Después de cambiar el tamaño, también podemos liberar espacio en la memoria usando Eliminar []. Este artículo le mostrará cómo cambiar el tamaño de una matriz en C++.