Как быстро найти число в массиве больше заданного? Допусти {1,10,100,150} на 15 вывести 100.
Есть QMap::lowerBound(const Key &key) вроде то что нужно, но придется хранить значения для ключей.
Если предполагается, что последовательность отсортирована, то стандартный std::lower_bound, а если нет.. То да, фактически остаётся перебор
C++ (Qt)
template <class InputIt>
InputIt greater_than(InputIt first, InputIt last, int val)
{
auto it_res = std::find_if(first, last, [&](int x){ return x >= val; });
if (it_res == last)
return last;
first = it_res;
while ((first = std::find_if(++first, last, [&](int x){ return x >= val; })) != last)
{
if (*first <= *it_res)
it_res = first;
}
return it_res;
}