Отличие функций upperbound и lowerbound в алгоритмах STL заключается в том, что они возвращают разные позиции, в которых может быть вставлен элемент с заданным значением: 1
- lower_bound возвращает позицию первого элемента, значение которого больше либо равно аргументу. 1 Если такого элемента не существует, функция возвращает итератор на конец (невключённый) массива. 3
- upper_bound возвращает позицию последнего элемента, значение которого больше аргумента. 1 Если такого элемента не существует, функция возвращает итератор на конец (невключённый) массива. 3
Таким образом, lowerbound находит наименьший элемент, который больше заданного значения k или равен ему, а upperbound — наименьший элемент, который строго больше заданного значения k. 3