upper_bound 和 lowwer_bound 用法

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。

在从小到大的排序数组中,

lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

在从大到小的排序数组中,重载lower_bound()和upper_bound()

lower_bound( begin,end,num,greater() ):从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num,greater() ):从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

#include<bits/stdc++.h> //万能头文件
using namespace std;
const int maxn=100000+10;
const int INF=2*int(1e9)+10;
#define LL long long
int cmd(int a,int b){return a>b;
}
int main(){int num[6]={1,2,4,7,15,34}; sort(num,num+6);                           //按从小到大排序 int pos1=lower_bound(num,num+6,7)-num;    //返回数组中第一个大于或等于被查数的值 int pos2=upper_bound(num,num+6,7)-num;    //返回数组中第一个大于被查数的值cout<<pos1<<" "<<num[pos1]<<endl;cout<<pos2<<" "<<num[pos2]<<endl;sort(num,num+6,cmd);                      //按从大到小排序int pos3=lower_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于或等于被查数的值 int pos4=upper_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于被查数的值 cout<<pos3<<" "<<num[pos3]<<endl;cout<<pos4<<" "<<num[pos4]<<endl;return 0;
}

关于找不到该值的时候返回 end() 还是 begin()

#include <iostream>
#include <bits/stdc++.h>using namespace std;int main()
{vector<int> v{1, 2, 3, 4, 5, 6};#if 0   //条件编译auto iter = upper_bound(v.begin(), v.end(), 9,greater<int>());
//在一个升序的容器里,找到大于9的数,找到最右边界都找不到 ,故返回 end()if (iter == v.begin()){cout << "retuen end";}#elseauto iter = upper_bound(v.begin(), v.end(), 0,less<int>());
//在一个降序的容器里,找到小于0的数, 找到最左边界都没有找到, 故返回 begin()if (iter == v.begin()){cout << "return begin";}#endif}

upper_bound 和 lowwer_bound 用法相关推荐

  1. 【转载】upper_bound 和 lowwer_bound 用法

    lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数 ...

  2. upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法

    头文件:#include lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begi ...

  3. upper_bound和lower_bound用法(史上最全)

    目录 基础用法 用greater<type>()重载 进阶用法(自定义匿名函数) upper_bound进阶 lower_bound进阶 所有代码 两者都是定义在头文件<algori ...

  4. upper_bound和lower_bound用法

    两个函数的用法类似,在一个左闭右开的有序区间里进行二分查找,需要查找的值由第三个参数给出.     对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,也就是返回指向被查值> ...

  5. lower_bound, upper_bound, greater, less 用法

    一般lower_bound(), upper_bound() 基本用法 定义: algorithm头文件的函数 功能: 二分查找,查询一个数组(vector也可以使用)中大于给定数的位置 条件: 因为 ...

  6. STL 二分查找 upper_bound和lower_bound用法

    STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search . 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...

  7. 关于lower_bound( )和upper_bound( )的常见用法

    ower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数组 ...

  8. lower_bound( )和upper_bound( )的常见用法

    ower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数组 ...

  9. lower_bound( )和upper_bound( )的基本用法

    lower_bound( )和upper_bound( )是C++ STL模板库中的函数,其作用可以看作是一个简单的二分模板. 基本使用方法: lower_bound: 参数:lower_bound( ...

最新文章

  1. 给出一个单链表,不知道节点N的值,只遍历一次就可以求出中间节点,写出算法...
  2. android 判断时间是否过期_眉笔眉粉有保质期吗?怎么判断眉笔眉粉是否过期?...
  3. python均值滤波_opencv+python实现均值滤波
  4. Xcode 升级后,cocoaPod 问题
  5. html鼠标悬停盒子凸起,css3 transform动画鼠标悬停div容器凸起放大显示
  6. 实验五 网络编程与安全-----实验报告
  7. C#LeetCode刷题之#189-旋转数组(Rotate Array)
  8. 共合网,风投的概念和阳谋
  9. OpenGL杂七杂八
  10. Model与Record转换适配
  11. ubuntu修改登陆用户名称_MySQL对于相同名称用户但host不同的登陆选择
  12. Objective-C浅拷贝和深拷贝
  13. matlab 三角函数积分,正弦函数与三角函数积分及Matlab编程.doc
  14. python中的文字怎么居中_各位大神,wxPython中,怎么让text文本居中显示?
  15. BPDU Timers
  16. JAVA计算机毕业设计校园线上点餐系统Mybatis+源码+数据库+lw文档+系统+调试部署
  17. 第二届北京智源大会拉开帷幕,百度翻译同传助力国际沟通无障碍
  18. 八股文-- 2022.08.31
  19. U盘中毒(一堆.scr扩展名的文件),文件不见了怎么办,怎么恢复隐藏文件
  20. [陈鹏导师精益项目实战]华北区家电行业精益改善项目第五期启动

热门文章

  1. 计算机更新后打印机无法使用,Win10升级后惠普打印机无法打印的解决方法
  2. 看JTS源码,感受Java优化编程
  3. 一个跨界程序员:不务正业的这几年,我如何让自己的收入翻了十倍(转)
  4. 自然增长率,到底怎么算才合理!
  5. 实现 JavaScript 哈希算法 包含 md5, sha1 sha256
  6. LVGL 8.2.0 Stacked area chart
  7. centos配置网桥以及brctl命令的使用
  8. DZ论坛+克米模板3.5版本全解密+教程
  9. 成都,今夜请将我遗忘 读后感
  10. 3D模型欣赏:《死亡搁浅》角色Porter 次世代 现实主义 【3D游戏建模教程】