c++中優先隊列的使用(自定義排序函數)

這只是寫一下自己遇到的問題

#include<queue>//先包含一個頭文件
priority_queue<int> queue;//定義一個優先隊列

默認從大到小排序,因爲是優先隊列呀
如果我們想從小到大排序就需要自定義排序函數了

bool operator > ( Node a,Node b) //這裏的參數如果是Node*    並不知道爲什麼
{
    return a.num > b.num; //自定義排序從小到大
};

這個排序函數寫在main函數之前,這裏Node是我自定義的結構體,用結構體裏某個成員變量的比較結果作爲排序依據。這裏如果參數爲Node*會報錯,我也不知爲什麼,對於運算符重載的知識還不瞭解。如果你想對簡單的類型int之類排序,我建議你用數組然後用sort排序方法。
寫了自定義排序函數後還要包含一個頭文件

#include<functional>

對應程序中優先隊列的聲明

priority_queue<Node,vector<Node>,greater<Node>> queue; //優先隊列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章