Esto no es relevante para el problema original publicado anteriormente, pero la búsqueda de Google en el error me lleva a esta página, así que estoy publicando aquí para que nadie vea.
Me encontré con este mensaje de error recientemente y todas las líneas de códigos prestados (no hubo 'borrar' o nada por el estilo, el vector fue meramente leído).
Finalmente, me di cuenta de que hay un problema con los bucles anidados.
Por ejemplo, considere algo como esto: - (!)
`for (it=begin(); it!=end();i++)
{
for (; it!=end();i++)
{
}
}`
Cuando haya terminado con el bucle anidado, se incrementará el iterador y luego, el bucle padres se incrementará de nuevo, en última instancia, hacer el paso del iterador sobre el final(). Es decir. sería "end() + 1" si existiera tal cosa. En consecuencia, el bucle padre arroja este error en la siguiente comprobación.
Para evitar esto, terminé insertar esta línea después del bucle niño:
`if (it == vStringList.end()) --it;`
sucio, pero funciona: D
Sé que puede ser obvio para algunos, pero no tengo estado rascándome la cabeza por esto por un tiempo, lol
Suponiendo que 'm_basesVector' es un miembro de' City', no hay necesidad de borrar sus elementos; su destructor está a punto de hacer eso por ti. –
Sabe que esto no eliminará los objetos a los que apuntan sus apuntadores. Tendría que llamar a 'eliminar deleteIterator;' para lograr eso (si eso es lo que quiere). Sin embargo, en ese caso, debería preferir 'boost :: ptr_vector'. –
Ver [allí] (http://stackoverflow.com/questions/307082/). – Wok