Ваш код имеет неопределенное поведение .
Вы создаете std::vector
с 5 int
с, , а затем вы clear()
вектор , который устанавливает его размер обратно в 0.
Затем вы запускаете al oop, который обращается к векторным элементам, которые находятся за пределами размера вектора. На данный момент ваш код имеет неопределенное поведение . Может произойти все, что угодно. Ваш код может взломать sh. Ваш код может повредить память.
Затем вы вызываете std::lower_bound()
для пустого вектора, поэтому он возвращает итератор end
, который совпадает с итератором begin
, поэтому расстояние между ними равно 0, что вы и распечатываете.
Вам нужно просто избавиться от вызова на clear()
, тогда ваш код будет работать так, как вы ожидаете.