Wie kann ich Elemente entfernen von einem std::set
während über sie iterierenSo entfernen Sie Elemente aus einem std :: gesetzt, während über sie iterieren
Mein erster Versuch wie folgt aussieht:
set<T> s;
for(set<T>::iterator iter = s.begin(); iter != s.end(); ++iter) {
//Do some stuff
if(/*some condition*/)
s.erase(iter--);
}
Aber dies problematisch ist wenn wir das erste Element aus der Menge entfernen wollen, weil iter--
den Iterator ungültig macht.
Was ist der Standard Weg, dies zu tun?
Die erste peice Code sagen, eine Behauptung nicht, dass die Iteratoren in der visuellen studion unvereinbar sind. Jedenfalls gibt std :: erase den neuen Iterator zurück, wie Sie in Ihrem Code darauf hingewiesen haben. – sajas