转载自 https://www.cnblogs.com/Tang-tangt/p/9291018.html

二分查找的函数有 3 个: 参考:C++ lower_bound 和upper_bound

lower_bound(起始地址,结束地址,要查找的数值) 返回的是数值 第一个 出现的位置。

upper_bound(起始地址,结束地址,要查找的数值) 返回的是数值 最后一个 出现的位置。

binary_search(起始地址,结束地址,要查找的数值)  返回的是是否存在这么一个数,是一个bool值

1  函数lower_bound()  参考:有关lower_bound()函数的使用

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

注意:如果所有元素都小于val,则返回last的位置,且last的位置是越界的!!

2 函数upper_bound()

功能:函数upper_bound()返回的在前闭后开区间查找的关键字的上界,返回大于val的第一个元素位置

注意:返回查找元素的最后一个可安插位置,也就是“元素值>查找值”的第一个元素的位置。同样,如果val大于数组中全部元素,返回的是last。(注意:数组下标越界)

PS

lower_bound(val):返回容器中第一个值【大于或等于】val的元素的iterator位置。

upper_bound(val): 返回容器中第一个值【大于】

举个例子,1 2 3 5 序列中查找4

lower_bound(4) 是5的迭代器,upper_bound(4)也是5的迭代器,但binary_search(4) 返回的是false

而对于,1,2,3,4,4,4,4,5,6,7查找4

lower_bound(4)是第4个元素的迭代器,upper_bound(4)是5的迭代器,binary_search(4)返回的是true

最新文章

  1. Linux创建WiFi热点
  2. Docker生态与命令
  3. ios - runtime运行时应用---交换方法
  4. 快乐的JS正则表达式(二)
  5. Java学习之IO流总结
  6. P1082 找朋友
  7. overfllow的解析
  8. CButtonST的用法详解【转】
  9. 自己动手编写IOC框架(二)
  10. python3 爬虫---爬取豆瓣电影TOP250
  11. Linux内核架构与底层--读书笔记
  12. Autofac之自动装配
  13. Awesome-VR
  14. Zabbix3.4监控平台部署
  15. Go语言中的结构体 (struct)
  16. 学习之响应式Web设计---一个实例
  17. day 32 子进程的开启 及其用法
  18. 关于css中float的理解
  19. Node.js+Ajax实现物流小工具
  20. Linux 平台和 Windows平台下 Unicode与UTF-8互转

热门文章

  1. html中的dl,dt,dd标签
  2. IDEA闪退问题
  3. C语言scanf的返回值
  4. 在XCode中使用XCTest
  5. 判断用户输入YES或NO
  6. 001-supervisor
  7. PAT Advanced 1001 A+B Format (20 分)
  8. centos 安装代理服务 proxy server squild
  9. Python---进阶---函数式编程---按照权重排序
  10. Kibana后台进程启动和关闭