Я уверен, что они, вероятно, будут очень похожи, но у них будут различия, потому что один должен обрабатывать «не найденный» элемент определенным образом, а другому не нужно об этом беспокоиться ( не в отладочной сборке).
std::set::erase( const key_type& )
вернет 0
или 1
в зависимости от того, найден ли соответствующий элемент для стирания.
std::set::erase( iterator )
ничего не возвращает и имеет определенное поведение, только если переданный итератор является разыменованным. Так что если вы передадите find(x)
, где x
не будет в наборе, у вас возникнет проблема.