Comment faire pour supprimer des éléments d'un std::set lors de l'itération sur elle
Comment puis-je supprimer des éléments d'un std::set
lors de l'itération sur elle
Ma première tentative ressemble:
set<T> s;
for(set<T>::iterator iter = s.begin(); iter != s.end(); ++iter) {
//Do some stuff
if(/*some condition*/)
s.erase(iter--);
}
Mais c'est problématique si l'on veut supprimer le premier élément de l'ensemble, car iter--
invalide l'itérateur.
Quel est le moyen standard pour ce faire?
OriginalL'auteur dspyz | 2013-12-17
Vous devez vous connecter pour publier un commentaire.
Standard est de faire quelque chose comme
Par la première condition, nous sommes sûrs, que
iter
ne sera pas invalidé toute façon, depuis une copie deiter
sera passé dans les effacer, mais notreiter
est déjà incrémenté, avant l'effacement est appelé.En C++11, le code sera comme
OriginalL'auteur ForEveR