У меня есть вектор действительных значений, отсортированный по возрастанию.Ищите элемент в векторе
Эти значения могут быть в диапазоне [0, 1]
. Затем я выбираю значение x
в этом диапазоне, и мне нужно найти, который является индексом меньшего значения, большего или равного x
.
я могу решить эту проблему путем перебора всего массива:
vector<double> values;
double x;
for (auto val : values)
{
if (x <= values)
{
// found
break;
}
}
Есть ли более быстрый способ получить тот же результат? Я думал о бинарном поиске, но как его реализовать?
Не обязательно быстрее, но более удобным для чтения: [ 'станд :: find_if()'] (http://en.cppreference.com/w/cpp/algorithm/find). –