Tecnología

Inicio

¿Cómo podemos asignar dinámicamente Tamaño del Arreglo?

Las matrices en la programación de computadoras son colecciones o secuencias de valores contenidos en un único nombre de la variable. Estas estructuras de datos permiten a los programadores representan series de datos o listas de datos para una variedad de propósitos, tales como la clasificación o iteración. Sin embargo, en muchos lenguajes de programación, como C / C ++, matrices programadores deben declarar, tamaños de matriz que no cambian estáticas. Mediante el uso de técnicas de asignación de memoria en un lenguaje como C ++, el programador puede crear dinámicamente matrices o incluso cambiar el tamaño de esas matrices durante la ejecución del programa.

Las matrices

En los lenguajes de bajo nivel como C o C ++, las matrices son estáticas. Una vez declarado con un valor de tamaño, esa matriz mantendrá siempre que el tamaño. El compilador asigna un bloque de memoria continua de la matriz. Cualesquiera otras funciones o variables que necesitan memoria se colocarán después de la matriz. En consecuencia, la matriz no puede cambiar de tamaño sin sobrescribir los datos que le sigue. Así, por ejemplo, una vez que un programador declara una matriz con veinte espacios, que array siempre tendrá veinte espacios, si se utilizan o no, para la vida de la estructura de datos.

Asignación de memoria en el montón

Con el fin de evitar esta limitación, sin embargo, los programadores pueden asignar memoria en el montón. Normalmente, variables y matrices declaradas en un programa o función se colocan en la pila, lo que representa esencialmente la memoria a corto plazo. Una vez que el tiempo de vida de la función existe la matriz de acabados, se elimina la matriz. Mediante el uso de la "nueva" palabra clave, sin embargo, el programador puede recopilar memoria del montón, que es la memoria a largo plazo que existe fuera de la función que declara la matriz. Por otra parte, el programador puede utilizar el Montón de declarar matrices de forma dinámica.

Las matrices dinámicas

Con los arreglos, el programador tiene que declarar el tamaño de la matriz en la declaración. Este tamaño debe ser representado por un valor constante, o bien una variable constante o un número entero. Sin embargo, utilizando el operador "new", el programador puede usar variables para las matrices de tamaño, y el usuario puede incluso entrar en el valor de estas variables durante el tiempo de ejecución. El siguiente ejemplo muestra la diferencia:

int main () {

int arr [5]; // Nueva matriz, debe ser dimensionado con valor constante
int size = 5;
int * Dynamic_Array = new int [tamaño]; // Tamaño de la matriz es dinámico

Cambiar el tamaño de matrices

Con estas matrices dinámicas, a continuación, el programador puede crear matrices que se pueden cambiar de tamaño. La clase "vector" representa una matriz de expansión dinámica o disminuyendo la ventaja de que TAKS de matrices dinámicas. El siguiente ejemplo ilustra cómo crear una matriz simple que crece más grande en tamaño:

int main () {

int * arr = new int [5];
int nuevo_tam = 10;

arr [0] = 1;
arr [1] = 2;

/ Redimensionar /
int * arr2 = new int [nuevo_tam];

arr2 [0] = arr [0];
arr2 [1] = arr [1];

delete [] arr;
arr = arr2;

return 0;
}