1. 程式人生 > 其它 >優先佇列自定義排序函式

優先佇列自定義排序函式

1 按數值從小到大輸出

priority_queue<int,vector<int>,greater<int> >q;   //可理解為值越來越大

2 按數值從大到小輸出

priority_queue<int,vector<int>,less<int> >q;     //可理解為值越來越小

3 預設值 相當於less

priority_queue<int>q;

4.資料型別為結構體 自定義排序函式

struct node{
	int id;
	int dis;
	bool operator > (const node &a)const{
		return dis>a.dis;              //代表你定義的優先順序 可以隨意定義
	}
};

priority_queue<node,vector<node>,greater<node> >q1;  //只能對應 operator > 符號
priority_queue<node,vector<node>,less<node> >q2;  //只能對應 operator < 符號

例子:

bool operator > (const node &a)const{
    return dis>a.dis;
}
priority_queue<node,vector<node>,greater<node> >q;   //按照從小到大的順序輸出

/*----------------------------*/

bool operator < (const node &a)const{
    return dis>a.dis;
}
priority_queue<node,vector<node>,less<node> >q;   //按照從小到大的順序輸出