Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/04/2014, 12:32
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 11 meses
Puntos: 61
Respuesta: Problema con set

Algo mas que mejorar en el codigo, es que el tipo size_t nunca es negativo, por lo que comparar una variable de tipo size_t ( if( variable < 0 ) ) será siempre falso, o hacer cast antes, para luego comparar if( (size_t) variable < 0 ) tambien sera siempre falso.

Una explicación más profunda del problema a continuacion: (no apto para cardíacos)
El programa que mostrabas generaba un bad_alloc debido a que se intentaba hacer una reserva de memoria tan grande como el numero mas grande que cabe en un entero, esto debido a que el metodo longitud() hace calcula " longitud_ - 1 ", pero esto podria ser negativo cuando longitud_ vale 0 ? La respuesta es no, pues longitud() retorna un size_t (osea, siempre positivo, o cero).

Casi todo el código mostrado antes de presentar la definición de "Cadena" era inocente del problema que se presentaba.
__________________
Visita mi perfil en LinkedIn