我有一个真实值 vector ,按升序排序。
这些值可以在[0, 1]
范围内。然后我在这个范围内选择一个值x
,我需要找到大于或等于x
的较小值的索引。
我可以通过迭代整个数组来解决这个问题:
vector<double> values;
double x;
for (auto val : values)
{
if (x <= values)
{
// found
break;
}
}
有没有更快的方法来获得相同的结果?我正在考虑二分查找,但是如何实现呢?
最佳答案
使用std::lower_bound
:
#include <iterator>
#include <algorithm>
std::distance(begin(values)
, std::lower_bound(begin(values), end(values), x));
如果该项目不存在,它将为您提供一个比最后一个元素大一的索引。
关于c++ - 寻找 vector 内的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452903/