Стандарт не требует проверки std::vector::iterator::operator++
. Увеличение значения после end
или уменьшение после begin
является неопределенным поведением.
Неопределенное поведение не означает означает «выдает исключение». Поскольку он не определен, реализация, которая выбрасывает, является допустимой, как и реализация, считывающая смежную память.
Если вы хотите определить свой Vector
класс, который будет выдавать при выходе за пределы допустимого диапазона, вы можете. Для этого потребуется, чтобы ваш итератор имел доступ к пределам диапазона, что означает больше переменных-членов. Обычно std::vector<T>::iterator
содержит (или равно ) один T*
.