Iterieren über ein STL-set und selektiv entfernen von Elementen?
Folgende code funktioniert nicht richtig. Wie sollte es richtig gemacht werden?
for (std::set<Color>::iterator i = myColorContainer.begin();
i!=myColorContainer.end();
++i)
{
if ( *i == Yellow)
{
DoSomeProccessing( *i );
myColorContainer.erase(i);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht eine Schleife, als youre Umgang mit einem Satz.
Versuchen:
Gehen Sie einmal zur nächsten Nachricht mit
++i
es ist garantiert gültig - Eigenschaftstd::set
dass Iteratoren auf Elemente eingefügt werden niemals ungültig, es sei denn, das elemententfernt.
So, jetzt können Sie sicher löschen Sie den vorherigen Eintrag.