大家好,我是Amy~

好久不见啊(主要是我太懒了,这几天比较忙,不想更新……再加上快开学了,我的作业还没有做完QAQ)你们的暑假作业都做完了吗(哦对,大佬不用做作业QAQ)

那今天我们就接着上次的binary_search函数来讲讲另外两个 “兄弟” 二分函数:lower_bound 和 upper_bound

lower_bound 和 upper_bound都是二分查找函数,为c++STL模板内的函数。比起手写二分,这些函数用起来会方便很多。


目录

二分思想

lower_bound函数

upper_bound函数

格式

区别


二分思想

对二分不熟悉的可以先看看我的这篇讲二分的文章:C++二分解释【初学者放心进,简单易懂】

知道什么是二分了,我们就可以开始了解这两个函数了

lower_bound函数

lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值

函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置(节选自lower_bound()函数用法_Anonymous-邦的博客-CSDN博客)

简单来讲就是在一个区间中进行二分查找,返回第一个大于等于目标值的元素位置

测试代码:

#include<bits/stdc++.h>
using namespace std;int main(){int a[14]={1,2,2,3,4,4,4,4,5,6,7,9,9,10};cout<<lower_bound(a,a+14,4)<<endl;cout<<lower_bound(a,a+14,4)-a<<endl;return 0;
}

upper_bound函数

upper_bound也是二分查找函数,定义在 <algorithm> 头文件中,用于在区间内查找第一个大于目标值的元素位置

(博主太懒,加上能力有限,百度查不到想lower_bound一样专业的解释,就简单讲一下吧,用法和lower_bound类似)

测试代码:

#include<bits/stdc++.h>
using namespace std;int main(){int a[14]={1,2,2,3,4,4,4,4,5,6,7,9,9,10};cout<<upper_bound(a,a+14,4)<<endl;cout<<upper_bound(a,a+14,4)-a<<endl;return 0;
}

格式

这两个函数的格式一样,和sort都很相似

大概就是:函数名(start , end , val) ;

区别

这两个函数虽然是兄弟,用法也几乎一样,但是在功能上还是有些许区别的

upper_bound是查找区间内第一个大于目标值的元素位置,而lower_bound确实查找区间内第一个大于等于目标值的元素位置

(区别好像也不是特别大,就是一个“等于”之差哈)


那今天就到这里啦,感谢您的支持

我是Amy,下期再见吧,拜拜~

【C++ 二分函数——lower_bound upper_bound用法】相关推荐

  1. 给不会调用C++STL库中二分函数lower_bound,upper_bound,binary_search同学的一些话!

    lower_bound算法返回第一个大于等于给定值所在的位置.设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置.当start和last指向相同位置 ...

  2. c++ 二分查找的函数 lower_bound upper_bound binary_search

    简介 C++ STL 中二分查找函数主要有这三种: lower_bound() upper_bound() binary_search() 这三个函数都运用于有序区间. 用法 1. lower_bou ...

  3. 二分函数lower_bound()

    函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置.如果所有元素都小于val,则返回last的位置 举例如下: 一个数组number ...

  4. C++ 二分查找函数 lower_bound upper_bound

    lower_bound (ForwardIterator first, ForwardIterator last,const T& val) (ForwardIterator first, F ...

  5. 论c++的二分函数lower_bound

    毋庸置疑,他返回的就是第一个大于等于要搜索的那个数: 但是如果这个数组里面的数都小于或者都大于呢? 本人测试了一下,当数列里面的数都大于这个数,返回0: 当数列里面的数都小于这个数,返回数组上界,(返 ...

  6. 二分检索函数lower_bound()和upper_bound()

    二分检索函数lower_bound()和upper_bound() 一.说明 头文件:<algorithm> 二分检索函数lower_bound()和upper_bound() lower ...

  7. 二分查找、求上界和下界(包括内置函数lower_bound、和upper_bound的使用)

    二分查找: //二分查找(迭代实现) int bsearch(int* array, int low, int high, int index) {int mid;while (low < hi ...

  8. C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)

    find().find_if().search() 等.值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高.例如,当指定区域内的数据处于有序状态时,如果 ...

  9. lower_bound和 upper_bound 用法(STL)

    lower_bound和 upper_bound的头文件是#include<algorithm> lower_bound 返回第一个大于等于 x 的数的地址/迭代器 upper_bound ...

最新文章

  1. Celery 应用:Application
  2. 对Linux中/etc/fstab中的说明
  3. java培训机构_java编程软件培训机构
  4. OpenCASCADE:形状愈合之通用拆分工具
  5. 阿里巴巴Java开发手册(开发规范)——编程规约笔记
  6. Linux:查看内存和CPU信息
  7. 爱立信牵手微软,加速物联网全球生态
  8. 长度、面积、体积的相似比原理
  9. 《The C programming language》学习笔记
  10. 7.Swoole的自定义协议功能的使用
  11. [C] C语言中的布尔值
  12. 免费源码赠送之 printf(C语言简化版)
  13. C语言基础视频教程-欧阳坚-专题视频课程
  14. openwrt开发--应用程序IPK包开发
  15. GEF入门级的helloword教程和示例工程代码
  16. 怎么做科研你懂吗?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  17. ABAP ALV单元格最大显示长度
  18. java虚拟机参数 -D、-X和-XX的区别
  19. GameObject的Active与InActive activeSelf, activeInHierarchy, SetActiveRecursively
  20. 【Android】Activity详解

热门文章

  1. android 横竖屏幕切换,Android 横竖屏切换总结
  2. SpringMVC POI导出EXCEL
  3. postman里面的mockserver使用方法
  4. 中基鸿业低收入家庭如何理财
  5. 渗透测试工具集(非常详细),从零基础入门到精通,看完这一篇就够了(附安装)
  6. docker一个镜像启动多个容器的操作
  7. 网络基础 -- 网络分层与三次握手、四次挥手
  8. 期刊论文写作之【python matplotlib 画图设置】
  9. vue antd table customRender 自定义标签
  10. 边缘检测(opencv_python下)