優先佇列priority_queue基本操作
阿新 • • 發佈:2019-02-10
基本操作
priority_queue<int>q;//建立int型別的優先佇列q,當然也可以是結構體型別
q.empty() //佇列為空則返回真,非空返回假
q.pop() // 刪除佇列的第一個元素
q.push() //新增一個元素
q.size() //返回佇列中的元素數量
q.top() //返回佇列中優先順序最高的一個元素
預設情況下,佇列內元素大的優先順序高,會先出佇列。
通過過載操作符可以自定義優先順序
struct node
{
int x;
int y;
int time;
friend bool operator < (node n1, node n2)
{
return n1.time>n2.time;
}
};
通過對<的過載,實現佇列內按照time的大小升序排列,此時time小的優先順序高,優先順序高的會先出佇列。
不要過載>,因為標準庫是預設使用<來確定它們之間的優先順序。
當然,也可以模仿sort函式中的cmp函式,寫出多級排序,效果都是一樣的。
sort函式http://blog.csdn.net/qq_32680617/article/details/50629215