一般lower_bound(), upper_bound() 基本用法

定义: algorithm头文件的函数
功能: 二分查找,查询一个数组(vector也可以使用)中大于给定数的位置
条件: 因为是使用二分查找,所以数组必须是有序的(一定是小于) 一定先用sort一下
返回值: 返回目标的地址,所以你不能直接把返回值赋值给谁,一般要减去首地址,这样就得到目标的数组小标(反人类设计qwq),否则你会得到一个 *long long 不能赋值给 int的报错
区别:

  • lower_bounder是找到第一个>=给定数字的位置
  • upper_bounder是找到第一个 严格大于( 没有= ) 给定数的位置

使用:

lowwer_bounder(s+a,s+b,t)
upper_bounder(s+a,s+b,t)
  • s 是数组
  • 第一个参数是查找范围的左边界(左闭区间) ,0就不写了(s)
  • 第二个参数是查找范围的右边界(右开区间,超尾原理)
  • 第三个数据是我们要找的数据
  • 如果找到最后都找不到就返回end,就是ss+b

示例:

s[10]={0,1,2,3,4,4,6,7,8,9}
cout<<lower_bounder(s,s+10,4)-s<<endl
cout<<upper_bounder(s,s+10,4)-s<<endl
cout<<lower_bounder(s,s+10,100)-s<<endl

输出

4
6
10

特殊的lower_bound(), upper_bound() 基本用法

定义: set/multiset中的一个方法
相同: 功能相同
区别: 无需指定查找区间,范围就是整个set/multiset
用法:

auto it=s.upper_bound(a[i]);

查找严格小于或小于等于某数的结果

1.结构体重载<

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;struct s{int t;bool operator < (const s tmp)const{return t>tmp.t;}
}a[20]={1,2,3,4,5,6,7,8,9,10};int main(){sort(a,a+10);   //必须默认顺序排序int pos=upper_bound(a,a+10,s({5}))-a;cout<<a[pos].t;return 0;
}

2.使用greater

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;int a[20]={1,2,3,4,5,6,7,8,9,10};bool cmp(int a,int b){return a>b;
}int main(){sort(a,a+10,cmp);   //必须是从大到小排序// sort(a,a+10);int pos=upper_bound(a,a+10,5,greater<int>())-a;cout<<a[pos];return 0;
}

greater<> & less<>

两个函数的头文件是

  1. 建堆的时候,默认是小根堆,第三个参数用greater会变成大根堆;
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;set<int,greater<int> > s;int main(){s.insert(5);s.insert(4);s.insert(3);s.insert(2);cout<<*s.begin();return 0;
}
  1. 排序的时候,默认是从小到大,但是第三个参数用greater会变成从大到小,而不需要cmp
  2. upper_bound默认是找大于,但是第三个参数用greater就是找小于
  3. 优先队列默认是从大到小,但是用greater会变成从小到大,注意与一般的相比要加一个vector<int>
priority_queue <int,vector<int>,less<int> > p;
priority_queue <int,vector<int>,greater<int> > q;

就当默认是less,相反就加greater

lower_bound, upper_bound, greater, less 用法相关推荐

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

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

  2. pair用法 lower_bound upper_bound

    int a,b;pair<int,int>p;cin>>a>>b;p=make_pair(a,b);cout<<p.first<<" ...

  3. upper_bound 和 lowwer_bound 用法

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

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

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

  5. STL源码剖析 lower_bound | upper_bound | binary_search

    lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素. 如果没有数值相等的元素,会返回 ...

  6. lower_bound()/upper_bound()函数(C++)

    文章目录 1.lower_bound()/upper_bound()函数简单介绍 2.lower_bound()/upper_bound()函数分析 3.lower_bound()/upper_bou ...

  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. 【C++ 二分函数——lower_bound upper_bound用法】

    大家好,我是Amy~ 好久不见啊(主要是我太懒了,这几天比较忙,不想更新--再加上快开学了,我的作业还没有做完QAQ)你们的暑假作业都做完了吗(哦对,大佬不用做作业QAQ) 那今天我们就接着上次的bi ...

最新文章

  1. jQuery Pagination分页插件--无刷新
  2. 手把手视频:万能开源Hawk抓取动态网站
  3. 读《第一次把事情做对》有感
  4. 随想录(驱动开发程序员需要的一些技能)
  5. Java之图片添加文字
  6. 分享md5解密站源代码,简单的代码就可以实现md5解密
  7. mysql error 1114_ERROR 1114 (HY000): The table 'test1' is full 的解决
  8. 如何解决“'mvn' 不是内部或外部命令,也不是可运行的程序或批处理文件。”问题
  9. 学生台灯哪个品牌的专业?盘点小学生台灯品牌排行榜
  10. 云计算机和云储存,云计算和云存储是什么关系?
  11. 软件设计工程——设计流程
  12. 横向越权与纵向越权区别
  13. VNC Viewer连接树莓派无法调整分辨率
  14. 华为手机录屏大师录制的视频在本地目录找不到无法转移到PC的问题解决方案——免费转移视频
  15. 概念结构设计( 实体与属性的划分原则、E-R图的集成)、逻辑结构设计(任务、步骤、转换方法、数据模型的优化、设计用户子模式、物理结构设计)....
  16. 【java】猜字游戏
  17. ssm+jsp计算机毕业设计宠物网站laf7a(程序+LW+源码+远程部署)
  18. 【Pygame实战】单机游戏《赛车计划》评测:不一样的汽车题材游戏,除了技术还看运气~(附代码)
  19. matlab将二值图像与原图重叠_MATLAB:增加噪声,同时多次叠加噪声图和原图以及求平均图像(imnoise,imadd函数)...
  20. 外部排序--归并算法实现

热门文章

  1. python xlsxwriter不覆盖写入_python 2.7 使用xlsxwriter模块写入excel文件数据时,左上角出现绿色的小三角符号,无法生成表格怎么办?...
  2. 委以重用的意思_被领导重用的五个信号,往往从改变称呼开始,后面就是升职加薪...
  3. 复变函数——学习笔记4:复变函数的积分
  4. zero-shot, one-shot和few-shot
  5. python中不论类的名字是什么意思_Python中的名实关系——名字、命名空间、作用域...
  6. wordpress php7 报错,Use of undefined constant taotag-assumed 'taotag'知更鸟begin主题PHP7.0报错WordPress5.2...
  7. 骑行健身,是普通人走出信息泛滥时代的捷径
  8. 丁磊三番五次带货,有道词典笔为何受宠?
  9. 知识付费海哥|我的理想是不上班
  10. 汽车保养里程碑 软件程序