если я стираю элемент из std:: set и передаю ключ, а не итератор, и ключ не находится в наборе прямо сейчас, будет ли выведено исключение? Дело в том, что каждое второе предложение в документации MSDN гласит: "Это бла-бла, но оно не соответствует стандарту". Поэтому мне нужно знать стандартное поведение. Я просто не мог найти его в стандарте. Также будет перенаправлено на соответствующее предложение. Спасибо.
Станд:: набор <T>:: Стирание (ключ). Что делать, если ключа нет?
Ответ 1
Обнаружено это в разделе 23.1 (Требования к контейнеру):
нет erase(), pop_back() или Функция pop_front() выбрасывает исключение.
Так что erase
не может генерировать исключение.
Ответ 2
size_type erase ( const key_type& x );
Возвращаемое значение
Функция возвращает количество стираются элементы, которые в наборе контейнеры равны 1, если элемент с значение x существовало (и, следовательно, было впоследствии стираются), и ноль в противном случае.
(из set:: erase)