prä oder postinkrementieren/dekrementieren in schleifen?
-
... schrieb:
HumeSikkins ist das hier ok?
for(MapIterator itr = c.begin(); itr != c.end(); ++itr) { if(itr->second == "bla") { c.erase(itr); } }Nein. Durch die erase-Operation wird der Iterator ungültig. Der nachfolgende Aufruf des Inkrement-Operators führt dann zu undefiniertem Verhalten.
-
Ich bin zwar nicht HumeSikkins, aber trotzdem: nein. c.erase(it) zerlegt den übergebenen Iterator, danach dürfte er nicht mehr auf ein gültiges Element des Containers zeigen - und danach brauchst du viel Glück (und eine stabil implementierte Bibliothek), um noch sinnvoll mit it weiterarbeiten zu können.
Du mußt deinen Zähl-Iterator also schon weitergerechnet haben, bevor du eine Kopie davon an c.erase() übergeben kannst - und das schaffst du z.B. mit effe_eichelt's Code.
-
Ah
Endlich hab ichs gerafft. Danke. 
-
TGGC schrieb:
Bitte.
Bye, TGGC (Demo or Die)
-
