Подтвердить что ты не робот

Станд:: набор <T>:: Стирание (ключ). Что делать, если ключа нет?

если я стираю элемент из std:: set и передаю ключ, а не итератор, и ключ не находится в наборе прямо сейчас, будет ли выведено исключение? Дело в том, что каждое второе предложение в документации MSDN гласит: "Это бла-бла, но оно не соответствует стандарту". Поэтому мне нужно знать стандартное поведение. Я просто не мог найти его в стандарте. Также будет перенаправлено на соответствующее предложение. Спасибо.

4b9b3361

Ответ 1

Обнаружено это в разделе 23.1 (Требования к контейнеру):

нет erase(), pop_back() или Функция pop_front() выбрасывает исключение.

Так что erase не может генерировать исключение.

Ответ 2

size_type erase ( const key_type& x );

Возвращаемое значение

Функция возвращает количество стираются элементы, которые в наборе контейнеры равны 1, если элемент с значение x существовало (и, следовательно, было впоследствии стираются), и ноль в противном случае.

(из set:: erase)