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