Jak mogę usunąć elementy z std::set
podczas iteracji nad nimJak usunąć elementy z std :: set podczas iteracji nad nim
Moja pierwsza próba wygląda następująco:
set<T> s;
for(set<T>::iterator iter = s.begin(); iter != s.end(); ++iter) {
//Do some stuff
if(/*some condition*/)
s.erase(iter--);
}
Ale to jest problematyczne jeśli chcemy usunąć pierwszy element z zestawu, ponieważ iter--
unieważnia iterator.
Jaki jest standardowy sposób, aby to zrobić?
Pierwszy peice kodu nie twierdzenie mówi, że iteratory są niezgodne w Studion wizualnej. W każdym razie, std :: erase zwraca nowy iterator, jak wskazałeś w swoim kodzie. – sajas