lower_bound/upper_bound 优先队列自定义

一些笔记

cite

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;
}
posted @ 2021-10-23 22:29  Xuuxxi  阅读(215)  评论(0编辑  收藏  举报