作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
C++ 中有没有什么东西基本上等同于 partition_point 但我可以在其中使用索引作为额外信息?
例如,假设我有一个 vector<int> X = {0,1,2,8,9,11}
我知道的是排序的并且只有非负整数,我想要第一个索引 X[i] != i
.我将如何编写这个的二进制搜索版本?我知道谓词 X[i] == i
返回 true true true false false false
.
如果我不需要使用索引,我可以只使用 std::partition_point
.我可以自己编写,但实际上,可能有人已经编写了无错误版本。
谢谢。
最佳答案
你可以试试这个版本。
auto it = std::partition_point(std::begin(v), std::end(v),
[&](const int& e) { return e == (&e - std::data(v)); });
Demo .
不确定我们是否有保证 e
是 v
元素的引用。
关于使用索引信息的 C++ partition_point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35421622/
C++ 中有没有什么东西基本上等同于 partition_point 但我可以在其中使用索引作为额外信息? 例如,假设我有一个 vector X = {0,1,2,8,9,11}我知道的是排序的并且只
在前面章节中,我们系统学习了 partition()、stable_partition() 和 partition_copy() 这 3 个函数,它们的功能本质上都是根据某个筛选规则对指定范围内的数据
C++11 包含算法 std::partition_point() .然而,对于我尝试过的所有情况,它给出的答案与 std::lower_bound() 相同。 .唯一的区别是方便的 T& value
我是一名优秀的程序员,十分优秀!