Nie dotyczy to pierwotnego problemu zamieszczonego powyżej, ale wyszukiwanie tego błędu przez Google prowadzi mnie do tej strony, więc zamieszczam ją tutaj, aby każdy mógł ją zobaczyć.
Wpadłem ostatnio na ten komunikat o błędzie i sprawdziłem wszystkie linie kodów (nie było "wymazywania" ani niczego podobnego, wektor był tylko czytany).
W końcu zdałem sobie sprawę, że istnieje problem z zagnieżdżonymi pętlami.
Rozważmy na przykład coś takiego: - (!)
`for (it=begin(); it!=end();i++)
{
for (; it!=end();i++)
{
}
}`
Kiedy skończysz z zagnieżdżonej pętli, to zwiększa zawartość iterator, a następnie, pętla rodzic go inkrementować ponownie, ostatecznie czyni krok iteratora nad końcem(). To znaczy. byłoby to "end() + 1", gdyby coś takiego było. W konsekwencji pętla nadrzędna zgłasza ten błąd przy następnym sprawdzaniu.
Aby obejść ten problem, skończyło się wstawić ten wiersz po pętli dziecka:
`if (it == vStringList.end()) --it;`
Brudne, ale działa: D
Wiem, że może to być oczywiste dla niektórych, ale mam przez chwilę nad tym głowiłem, lol
Zakładając, że 'm_basesVector' jest członkiem' City', nie ma potrzeby usuwania jego elementów; jego destruktor wkrótce to zrobi. –
Zdajesz sobie sprawę, że nie spowoduje to usunięcia obiektów, na które wskazują twoje wskaźniki. Aby to osiągnąć, musisz wywołać 'delete deleteIterator;' (jeśli tego chcesz). Jednak w tym przypadku powinieneś preferować 'boost :: ptr_vector'. –
Zobacz [tam] (http://stackoverflow.com/questions/307082/). – Wok