18 votes

std::set<T>::erase(key). Et si la clé n'est pas là ?

Si j'efface un élément d'un std::set et que je passe la clé, et non l'itérateur, et que la clé n'est pas dans le set en ce moment, est-ce qu'une exception sera levée ? Le problème est qu'une phrase sur deux dans la documentation MSDN dit : "ceci fait bla bla bla, mais ce n'est pas conforme à la norme". J'ai donc besoin de connaître le comportement standard. Je n'ai pas pu le trouver dans la norme. Une redirection vers la clause pertinente fera également l'affaire. Merci.

23voto

Vladimir Points 110327
size_type erase ( const key_type& x );

Valeur de retour

T éléments effacés, qui dans l'ensemble est 1 si un élément avec une valeur de x a existé (et a donc été effacé par la suite), et zéro autrement.

(de set::erase )

11voto

Asha Points 5976

J'ai trouvé cela dans la section 23.1 (exigences relatives aux conteneurs) :

n pop_front()ne lance un exception.

Alors erase ne peut pas lever une exception.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X