c++优先队列,小根堆

一直对priority不会,现在要记一下了

priority_queue<int,vector<int>,greater<int> >q;

这样的话,我们可以得到一个小根堆;
意思大概是<类型,<存储方式>,<比较函数> >;
但是这个小根堆只能支持int;
反正我不会啦;

struct cs{
    int x;
    bool operator < (const cs &rhs) const {
        return x > rhs.x;
    }
}a;
priority_queue<cs>Q;

这个是一个结构体的小根堆;
开心;
我们可以再结构体里面放各种东西;
感谢wl大佬;

给一个测试的代码;

#include<bits/stdc++.h>
#define Ll long long
using namespace std;
struct cs{
    int x;
    bool operator < (const cs &rhs) const {
        return x > rhs.x;
    }
}a;
priority_queue<cs>Q;
priority_queue<int,vector<int>,greater<int> >q;

int x,y;
int main()
{
    while(1){
        cin>>x;
        if(x==1){
            scanf("%d",&y);
            a.x=y;
            Q.push(a);
        }
        if(x==2){
            cout<<Q.top().x<<endl;
            Q.pop();
        }
    }
}

你可能感兴趣的:(c++优先队列,小根堆)