一、定义
定义主要有两种方式:
方式一:把比较函数定义在结构中:
struct Dian{
int x;
bool operator < (const Dian &a) const {
return x>a.x;//最小值优先
}
};
priority_queue<Dian>pq;
方式二:定义比较结构,尤其适用于对同一结构有多种不同的优先队列,如有的题目中大小堆并存
struct Dian
{
int x;
int y;
int v;
};
struct cmp1
{
bool operator ()(struct Dian x, struct Dian y)
{
return x.v> y.v; // v小的优先级高
}
};
struct cmp2
{
bool operator ()(struct Dian x, struct Dian y)
{
return x.v< y.v; // v大的优先级高
}
};
priority_queue<struct Vaul,vector<struct Vaul>, cmp1>q1;
priority_queue<struct Vaul,vector<struct Vaul>, cmp2>q2;