У меня есть ряд целых чисел [start, end]
и неубывающая монотонная функция f(i)
.
Итак, концептуально, у меня есть неубывающая последовательность [f(start), f(start + 1), .. , f(end)]
.
Могу ли я использовать std::upper_bound
в этой последовательности, чтобы найти первый элемент i
в диапазоне, который содержит f(i) > some_value
?
Концептуально, мне бы хотелось что-то вроде этого:
std::upper_bound(start, end + 1, some_value, [&](int lhs, int rhs) {
return f(lhs) < f(rhs);
});
Но это не скомпилируется, потому что start
и end + 1
не соответствуют требованиям итераторов вперед.