Является ли std :: set `erase (const key_type & x)` реализованным в STL таким же образом, как `erase (collection.find (x));`? - PullRequest
0 голосов
/ 10 марта 2012

Является ли std :: set erase ( x ) реализованным в STL так же, как erase ( collection.find( x ) ); (где x - const key_type&)?

1 Ответ

2 голосов
/ 10 марта 2012

Я уверен, что они, вероятно, будут очень похожи, но у них будут различия, потому что один должен обрабатывать «не найденный» элемент определенным образом, а другому не нужно об этом беспокоиться ( не в отладочной сборке).

  • std::set::erase( const key_type& ) вернет 0 или 1 в зависимости от того, найден ли соответствующий элемент для стирания.

  • std::set::erase( iterator ) ничего не возвращает и имеет определенное поведение, только если переданный итератор является разыменованным. Так что если вы передадите find(x), где x не будет в наборе, у вас возникнет проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...