Что такое prev(X), если X является итератором S.begin() для некоторого заказанного контейнера S, например, S является set?Я ожидал, что он станет S.end(), но это не совсем правильно.
prev(X)
X
S.begin()
S
set
S.end()
Это вызывает неопределенное поведение.From cppreference.com :
Поведение не определено, если указанная последовательность приращений или уменьшений потребует использования неинкрементного итератора (например, итератор с окончанием конца)) или что невырожденный итератор (такой как передний итератор или сингулярный итератор) уменьшается.