01/04/2014, 12:32
|
| | Fecha de Ingreso: junio-2008 Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 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 |