c++ - 在 std::vector 中搜索一个值的近似值

标签 c++ search vector

我有一个 vector ,

std::vector<float> v;

和一个浮点值,x。 vector v 包含 x+epsilon,其中 epsilon 非常小(但大于机器 epsilon),但它不包含 <强>x。有没有办法使用 STL 在 vector 中找到 x+epsilon 的索引?

类似于:

int i = alternative_find(v.begin(), v.end(), x, gamma) - v.begin();

这将返回 v 中所有位于 [x-gamma,x+gamma] 中的值的索引?我可以实现二分搜索功能(我想避免线性时间复杂度),但我真的很想知道是否可以用更简单的方式完成。

最佳答案

找到 std::lower_bound,然后是 std::upper_bound,您就会得到您的范围。

从迭代器中,您可以使用 std::distance 获取索引(但如果可以,请坚持使用迭代器!)。

这假设您的数据已排序,但由于您谈论的是二进制搜索,这似乎是一个明智的假设。

如果不是,那么无论如何您都必须检查每个元素,在这种情况下,任何方法基本上都一样好。

关于c++ - 在 std::vector 中搜索一个值的近似值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20924682/

相关文章:

python - 如何生成随机值的N维数组?

python - 计算两个 3D 向量之间的角度

C++ 删除 vector 、对象、释放内存

c++ - 是否有开源的 netflow 收集器 C++ 库集?

search - 从源代码构建 ncurses 时如何为 terminfo 数据库设置自定义搜索路径

c++ - 函数重载

Python - "in"语句搜索对象列表缓慢

iphone - iOS - 谁能建议我如何将 gmail 帐户集成到我的应用程序中并获取所有电子邮件的列表?

c++ - 无法配置文件

c++ - 虚拟模板函数: implementing the Visitor pattern with parameters