当我们有自己的结构体时
struct Edge{
int v1,v2,cost;
Edge(int tv1,int tv2,int c):v1(tv1),v2(tv2),cost(c){}
bool operator <(const Edge& e)const{
return this-> cost > e.cost;
}
};
priority_queue<Node> A;
priority_queue<Edge, vector<Edge>, less<Edge>>B;
priority_queue<Edge, vector<Edge>, greater<Edge> > C;
struct cmp {
bool operator()(Edge a,Edge b) {
return a.v1 > b.v1;
}
};
priority_queue<Edge, vector<Edge>, cmp > C;
没有结构体时也可以按照需要自己定义
priority_queue<int, vector<int>, less<int>>B; //大根堆
priority_queue<int, vector<int>, greater<int> > C; //小根堆
vector<int> counts(26,0);
struct cmp {
bool operator()(int a,int b) {
return counts[a] > counts[b]; //小顶堆
}
};
priority_queue<int, vector<int>, cmp > C; //小根堆