lower_bound/upper_bound 优先队列自定义
一些笔记
greater
() 头文件 #include
upper/lower_bound() 查找小于/小等于 相应的队列也要逆序存
对于想要查找小于/小等于 一定要先逆序数组/容器再查找,没查到也是返回end
#include<iostream>
#include<algorithm>
#include<set>
#include<functional>
using namespace std;
int n;
set<int,greater<int>> a;
int b[100010];
int main(){
for(int i = 1;i <= 10;i ++) a.insert(i);
auto i = upper_bound(a.begin(),a.end(),5,greater<int>());
auto i = upper_bound(a.begin(),a.end(),5); //报错
auto j = a.upper_bound(5); //等价i map同理
cout << *i;
cin >> n;
for(int i = 0;i < n;i ++) b[i] = i;
auto i = upper_bound(b,b + n,5);
cout << *i << endl;
i = upper_bound(b,b + n,5,greater<int>()); // 错误,要逆序
sort(b,b + n,greater<int>());
i = upper_bound(b,b + n,5,greater<int>());
cout << *i;
int t;
cin >> t;
}