在C++的标准库中优先队列默认优先级是参数值大的优先级高
(1)一般定义:
priority_queue<数据类型> 优先队列名;
当然有些时候我们需要优先级是从小到大的
(2)自定义优先级
1、
priority_queue<数据类型 ,vector<数据类型>, greater<数据类型> > 优先队列名;
这里再定义时传入了一个函数greater<>;这样定义后其优先级就是按参数从小到大的顺序。
2、
struct node
{
int p;
int value;
friend bool operator <(node a,node b) //自定义优先级
{
return a.value>b.value;
}
}
priority_queue<node> Q;
这样定义的优先队列也是按参数从小到大的的优先级定义的.
3、当结构体类型里既有整形成员变量又有字符型成员变量,且优先级是按当整形成员值不等时,按整形成员值从小到大的优先级,相等时,按字符成员的字典序的优先级时.
其定义如下:
struct node
{
int value;
char name[20];
bool operator < (const node & a) const
{
if(value != a.value)
return value>a.value;
else
return (strcmp(name,a.name)<0);
}
};
priority_queue<node>q;