std::list Element über Iterator löschen: Speicherfehler
-
Hallo!
Ich habe ein Problem mit den STL Iteratoren.
Es sei m_stain eine std::list mit Strukturen welche unter anderem den Integer "TTL" enthalen:
for (it = m_stain.begin(); it != m_stain.end(); ++it) if ((*it).TTL > 0) (*it).TTL--; else // TTL expired, removing element m_stain.erase(it);
Das Programm stürtzt mit einem Speicherfehler ab.
Was geschieht intern nach dem erase() ? Der Iterator sollte doch automatisch aufs nächste Element gesetzt werden, oder?
-
nimm den rückgabewert von erase
-
Juhu, vielen Dank.. Jetzt läufts perfekt!
Ich muss mir jetzt mal eine ordentliche STL Referenz besorgen wo solche Sachen drinstehen...
-