首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在向量内寻找项目

在向量内寻找项目
EN

Stack Overflow用户
提问于 2015-10-31 14:53:06
回答 4查看 618关注 0票数 2

我有一个实数向量,按增加的顺序排序。

这些值可以在[0, 1]范围内。然后,我在这个范围内选择一个值x,我需要找到哪个是较小值的索引,它大于或等于x

我可以通过遍历整个数组来解决这个问题:

代码语言:javascript
运行
复制
vector<double> values;
double x;

for (auto val : values)
{
    if (x <= values)
    {
        // found
        break;
    }
}

有更快的方法来获得同样的结果吗?我在考虑二进制搜索,但是如何实现呢?

EN

Stack Overflow用户

回答已采纳

发布于 2015-10-31 15:09:00

使用std::lower_bound

代码语言:javascript
运行
复制
#include <iterator>
#include <algorithm>

std::distance(begin(values)
            , std::lower_bound(begin(values), end(values), x));

如果该项不存在,它将为您提供一个比最后一个元素更大的索引。

演示

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33452903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档