Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: erest0r en 1 Octubre 2013, 22:45 pm



Título: Ayuda con el operador new
Publicado por: erest0r en 1 Octubre 2013, 22:45 pm
Hola, practicando con el operador new de C++ me he dado cuenta que no tiene forma de redimensionar el arreglo dinamico, por lo que segui el ejemplo de un amigo de crear una nuevo arreglo dinamico, copiar todo lo que tenia en el viejo y pasarlo al nuevo y destruirlo (el viejo), no se si es que ese operador no trae esa funcion, ¿O tendria que trabajar con la clase vector para poder manipularla?


Título: Re: Ayuda con el operador new
Publicado por: eferion en 2 Octubre 2013, 08:40 am
La clase vector trae su propia lógica para poder incrementar la memoria que internamente manipula, lo que sucede es que ese proceso es transparente para ti.

La clase vector dispone de métodos para reservar directamente una cantidad determinada de memoria interna. Esto viene bien cuando sabes que vas a llenar con muchos elementos un vector, ya que cada vez que tiene que incrementar su memoria interna tiene que hacer el proceso que tú has descrito. Como puedes imaginarte ese proceso puede deteriorar el rendimiento de la aplicación.

Lo que está claro es que, si necesitas más memoria en un vector, o lo haces como has descrito, o creas bloques de memoria independientes... la ventaja de este sistema es que no hay que hacer un volcado cada vez que se reserva un bloque nuevo... la desventaja es que el acceso a los elementos es más lento.