Questo non è pertinente al problema originale postato sopra, ma di ricerca di Google sull'errore mi porta a questa pagina in modo sto inviando qui per chiunque di vedere.
mi sono imbattuto in questo messaggio di errore di recente e tutte le linee di codice controllato fuori (non c'era 'Erase' o qualcosa di simile, il vettore è stato solo lettura).
Alla fine, mi sono reso conto che c'è un problema con cicli annidati.
Ad esempio, si consideri qualcosa di simile: - (!)
`for (it=begin(); it!=end();i++)
{
for (; it!=end();i++)
{
}
}`
Quando si è fatto con il ciclo nidificato, si incrementerà l'iteratore e poi, il ciclo genitore verrà incrementato di nuovo, in ultima analisi, rendendo il passo iteratore alla fine(). Cioè sarebbe "end() + 1" se ci fosse una cosa del genere. Di conseguenza, il ciclo genitore tiri questo errore al momento del check successivo.
Per aggirare il problema, ho finito per inserto questa linea dopo il ciclo bambino:
`if (it == vStringList.end()) --it;`
sporco, ma funziona: D
So che può essere ovvio per alcuni, ma ho mi sono grattato sopra la testa per un po ', lol
Supponendo che 'm_basesVector' sia un membro di' City', non è necessario cancellarne gli elementi; il suo distruttore sta per farlo per te. –
Sei consapevole che questo non eliminerà gli oggetti puntati dai puntatori. Dovresti chiamare 'delete deleteIterator; 'per ottenerlo (se è quello che vuoi). Comunque, in questo caso, dovresti preferire 'boost :: ptr_vector'. –
Vedere [lì] (http://stackoverflow.com/questions/307082/). – Wok