У меня есть ряд целых чисел [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 не соответствуют требованиям итераторов вперед.