Iteratoren: Kann das schief gehen?
-
... wenn das zu erasende Element das erste ist? Oder knallt es nur, wenn ich den iterator dann dereferenziere? Problem: Ich muss 1 zurück gehen, sonst wird das nächste Element ausgelassen.
typedef list<CObject*>::iterator iterator; for( iterator i = shadowObjects.begin(); i != shadowObjects.end(); ++i ) { if( ... ) { safeDelete((*i)); i = shadowObjects.erase(i); --i; // des do } }
-
Hat sich erledigt.
typedef list<CObject*>::iterator iterator; for( iterator i = shadowObjects.begin(); i != shadowObjects.end(); ) { if( ... ) { safeDelete((*i)); i = shadowObjects.erase(i); } else ++i; }