So entfernen Sie Elemente aus einem std::set während der Iteration über es
Wie kann ich das entfernen von Elementen aus einem std::set
während der Iteration über es
Mein Erster Versuch sieht so aus:
set<T> s;
for(set<T>::iterator iter = s.begin(); iter != s.end(); ++iter) {
//Do some stuff
if(/*some condition*/)
s.erase(iter--);
}
Aber das ist problematisch, wenn wir wollen, entfernen Sie das erste element aus dem set, weil iter--
kein iterator.
Was ist der standard-Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standard-Weg ist, etwas zu tun, wie
Durch die erste Bedingung, die wir sind sicher, dass
iter
wird nicht für ungültig erklärt werden, da eine Kopie deriter
weitergegeben werden zu löschen, aber unsereiter
ist schon erhöht, vor dem löschen aufgerufen wird.In C++11, der code wird wie