lower_bound
возвращает итератор. Если запрашиваемое вами значение отсутствует, оно возвращает итератор, который вы могли бы передать insert
в качестве параметра hint
(и получить установку с постоянной сложностью), что означает, что итератор ссылается на элемент, который будет сортироваться сразу после значения, которое вы попросил поискать.
Когда/если переданное вами значение больше любого значения в коллекции, оно вернет итератор .end()
контейнера. Попытка разыменовать конечный итератор дает неопределенное поведение - оно не относится к какому-либо фактическому элементу.
[Потому что это так определено] (http://en.cppreference.com/w/cpp/algorithm/lower_bound) - на самом деле , ваш код просто недействителен, потому что вы разыскиваете недействительный итератор. –
@KonradRudolph Это действительный итератор. Это просто не вызывает различий. –