lower_bound, upper_bound, greater, less 用法
一般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<>
两个函数的头文件是
- 建堆的时候,默认是小根堆,第三个参数用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;
}
- 排序的时候,默认是从小到大,但是第三个参数用greater会变成从大到小,而不需要cmp
- upper_bound默认是找大于,但是第三个参数用greater就是找小于
- 优先队列默认是从大到小,但是用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 用法相关推荐
- upperbound找不到_关于lower_bound( )和upper_bound( )的常见用法
头文件:#include lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begi ...
- pair用法 lower_bound upper_bound
int a,b;pair<int,int>p;cin>>a>>b;p=make_pair(a,b);cout<<p.first<<" ...
- upper_bound 和 lowwer_bound 用法
upper_bound 和 lowwer_bound 用法 lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, ...
- c++ 二分查找的函数 lower_bound upper_bound binary_search
简介 C++ STL 中二分查找函数主要有这三种: lower_bound() upper_bound() binary_search() 这三个函数都运用于有序区间. 用法 1. lower_bou ...
- STL源码剖析 lower_bound | upper_bound | binary_search
lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素. 如果没有数值相等的元素,会返回 ...
- lower_bound()/upper_bound()函数(C++)
文章目录 1.lower_bound()/upper_bound()函数简单介绍 2.lower_bound()/upper_bound()函数分析 3.lower_bound()/upper_bou ...
- 关于lower_bound( )和upper_bound( )的常见用法
ower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数组 ...
- lower_bound( )和upper_bound( )的常见用法
ower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的. 在从小到大的排序数组中, lower_bound( begin,end,num):从数组 ...
- 【C++ 二分函数——lower_bound upper_bound用法】
大家好,我是Amy~ 好久不见啊(主要是我太懒了,这几天比较忙,不想更新--再加上快开学了,我的作业还没有做完QAQ)你们的暑假作业都做完了吗(哦对,大佬不用做作业QAQ) 那今天我们就接着上次的bi ...
最新文章
- jQuery Pagination分页插件--无刷新
- 手把手视频:万能开源Hawk抓取动态网站
- 读《第一次把事情做对》有感
- 随想录(驱动开发程序员需要的一些技能)
- Java之图片添加文字
- 分享md5解密站源代码,简单的代码就可以实现md5解密
- mysql error 1114_ERROR 1114 (HY000): The table 'test1' is full 的解决
- 如何解决“'mvn' 不是内部或外部命令,也不是可运行的程序或批处理文件。”问题
- 学生台灯哪个品牌的专业?盘点小学生台灯品牌排行榜
- 云计算机和云储存,云计算和云存储是什么关系?
- 软件设计工程——设计流程
- 横向越权与纵向越权区别
- VNC Viewer连接树莓派无法调整分辨率
- 华为手机录屏大师录制的视频在本地目录找不到无法转移到PC的问题解决方案——免费转移视频
- 概念结构设计( 实体与属性的划分原则、E-R图的集成)、逻辑结构设计(任务、步骤、转换方法、数据模型的优化、设计用户子模式、物理结构设计)....
- 【java】猜字游戏
- ssm+jsp计算机毕业设计宠物网站laf7a(程序+LW+源码+远程部署)
- 【Pygame实战】单机游戏《赛车计划》评测:不一样的汽车题材游戏,除了技术还看运气~(附代码)
- matlab将二值图像与原图重叠_MATLAB:增加噪声,同时多次叠加噪声图和原图以及求平均图像(imnoise,imadd函数)...
- 外部排序--归并算法实现
热门文章
- python xlsxwriter不覆盖写入_python 2.7 使用xlsxwriter模块写入excel文件数据时,左上角出现绿色的小三角符号,无法生成表格怎么办?...
- 委以重用的意思_被领导重用的五个信号,往往从改变称呼开始,后面就是升职加薪...
- 复变函数——学习笔记4:复变函数的积分
- zero-shot, one-shot和few-shot
- python中不论类的名字是什么意思_Python中的名实关系——名字、命名空间、作用域...
- wordpress php7 报错,Use of undefined constant taotag-assumed 'taotag'知更鸟begin主题PHP7.0报错WordPress5.2...
- 骑行健身,是普通人走出信息泛滥时代的捷径
- 丁磊三番五次带货,有道词典笔为何受宠?
- 知识付费海哥|我的理想是不上班
- 汽车保养里程碑 软件程序