C++ lower_bound/upper_bound用法解析

打印 上一主题 下一主题

主题 1032|帖子 1032|积分 3096

1. 作用
           lower_bound和upper_bound都是C++的STL库中的函数,作用差不多,lower_bound所返回的是第一个大于或等于目标元素的元素地址,而upper_bound则是返回第一个大于目标元素的元素地址。
            从定义就可以看出两者的差别只差在是否取等的的地方  那何必要设置两个函数呢(bushi
2.使用条件
            用lower_bound/upper_bound进行二分查找时必须保证查找区间为升序序列!
            什么是升序序列?你小学老师没教过你吗(bushi  举个例子你就明白了:
 
        从第一个元素开始,后面的每一个元素都会大于等于前面一个元素 

   显然造成这种限制的原因就是出现在制作STL库的人身上 Orz,因为他所写的比较器是‘b;3 }4 lower_bound(a,a+n,val,cmp);5 upper_bound(a,a+n,val,cmp); [/code]     或者你可以更简单一些: 
  1. 1 lower_bound(起始位置first,结束位置last,目标元素val);
  2. 2 upper_bound(起始位置first,结束位置last,目标元素val);
  3. 3  //lower_bound/upperbound的返回值是一个地址值,若要得到目标元素的下标,直接减去数组首地址的值即可
复制代码
     最后,如果函数并没有找到目标元素,则会返回last的地址,且last的地址是越界的。
4.思考 
     https://www.luogu.com.cn/problem/P2249

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表