如何使用C++的lower/upper_bound
来源:网络收集 点击: 时间:2024-03-21lower_bound 可以在一个区间中二分查找,返回指向第一个大于等于 x 的元素位置的指针(或迭代器)
不过,这个区间必须是有序的,即提前从小到大排过序,通常使用时会先sort一下
lower_bound(首指针,尾指针,x);
和所有 algorithm 的函数一样,这个函数接受的区间左闭右开,也要在头文件中加上 #includealgorithm
如图,因为 lower_bound 返回参数为指针,所以要用 * 解除应用


lower_bound 也可以接受迭代器,例如 STL vector 中的 begin()/end()
vector 也是左闭右开,写起来十分方便

当然,我们可以手写二分代替lower_bound,代码也不是很长
该代码来源于网络


upper_bound 的使用方法和 lower_bound 差不多(毕竟它们名字就很像)
upper_bound 返回第一个大于 x 的元素的指针(或迭代器)

这个是 upper_bound 的迭代器版本

和 lower_bound 一样,upper_bound 手写起来也并不是很难
代码来源于网络

通过指针(或迭代器)的加减我们还可以求出返回元素的下标


以上就是 lower_bound/upper_bound 的主要使用方法及作用
这两个函数都可以手写,但如果想要节省时间,就直接调用吧
注意事项调用lower/upper_bound返回的是指针(迭代器),别忘了*解除引用!
区间左闭右开!
如果这篇经验帮到了您,就请投票+收藏吧,谢谢!
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_362855.html