【C++ 二分函数——lower_bound upper_bound用法】
大家好,我是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用法】相关推荐
- 给不会调用C++STL库中二分函数lower_bound,upper_bound,binary_search同学的一些话!
lower_bound算法返回第一个大于等于给定值所在的位置.设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置.当start和last指向相同位置 ...
- c++ 二分查找的函数 lower_bound upper_bound binary_search
简介 C++ STL 中二分查找函数主要有这三种: lower_bound() upper_bound() binary_search() 这三个函数都运用于有序区间. 用法 1. lower_bou ...
- 二分函数lower_bound()
函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置.如果所有元素都小于val,则返回last的位置 举例如下: 一个数组number ...
- C++ 二分查找函数 lower_bound upper_bound
lower_bound (ForwardIterator first, ForwardIterator last,const T& val) (ForwardIterator first, F ...
- 论c++的二分函数lower_bound
毋庸置疑,他返回的就是第一个大于等于要搜索的那个数: 但是如果这个数组里面的数都小于或者都大于呢? 本人测试了一下,当数列里面的数都大于这个数,返回0: 当数列里面的数都小于这个数,返回数组上界,(返 ...
- 二分检索函数lower_bound()和upper_bound()
二分检索函数lower_bound()和upper_bound() 一.说明 头文件:<algorithm> 二分检索函数lower_bound()和upper_bound() lower ...
- 二分查找、求上界和下界(包括内置函数lower_bound、和upper_bound的使用)
二分查找: //二分查找(迭代实现) int bsearch(int* array, int low, int high, int index) {int mid;while (low < hi ...
- C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)
find().find_if().search() 等.值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高.例如,当指定区域内的数据处于有序状态时,如果 ...
- lower_bound和 upper_bound 用法(STL)
lower_bound和 upper_bound的头文件是#include<algorithm> lower_bound 返回第一个大于等于 x 的数的地址/迭代器 upper_bound ...
最新文章
- Celery 应用:Application
- 对Linux中/etc/fstab中的说明
- java培训机构_java编程软件培训机构
- OpenCASCADE:形状愈合之通用拆分工具
- 阿里巴巴Java开发手册(开发规范)——编程规约笔记
- Linux:查看内存和CPU信息
- 爱立信牵手微软,加速物联网全球生态
- 长度、面积、体积的相似比原理
- 《The C programming language》学习笔记
- 7.Swoole的自定义协议功能的使用
- [C] C语言中的布尔值
- 免费源码赠送之 printf(C语言简化版)
- C语言基础视频教程-欧阳坚-专题视频课程
- openwrt开发--应用程序IPK包开发
- GEF入门级的helloword教程和示例工程代码
- 怎么做科研你懂吗?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
- ABAP ALV单元格最大显示长度
- java虚拟机参数 -D、-X和-XX的区别
- GameObject的Active与InActive activeSelf, activeInHierarchy, SetActiveRecursively
- 【Android】Activity详解