1. 程式人生 > 其它 >優先順序佇列

優先順序佇列

技術標籤:資料結構佇列

優先順序佇列中的元素自動依照元素的權值排列。權值最高者排在最前面。
預設的情況下維護的是一個大堆,即權值以從高到低排列。
第一種用法
優先順序判斷預設使用<操作符,輸出按權值從高到低順序

int main()
{

    priority_queue<int> q;
    q.push(6);
    q.push(4);
    q.push(2);
    q.push(5);
    q.push(1);
    q.push(3);
    for(int i=0;!q.empty();++i)
    {

        cout<<
q.top()<<" "; q.pop(); } cout<<endl; return 0; }

輸出
在這裡插入圖片描述

第二種用法
greater優先佇列 (權值從小到大排序)

priority_queue < int ,vector<int>, greater<int> >q;

less優先順序佇列 (權值從大到小排序)

priority_queue< int, vector<int>, less<int> >q;
或
priority_queue<
int ,vector<int> >q;

註釋

第一個引數為元素的型別,第二個引數為容器型別,第三個引數為比較函式(預設為less)

第三種方式
採用結構體

#include <iostream>
#include <bits/stdc++.h>
#include <queue>
#include <stack>

using namespace std;
struct node
{
      int s;
      int r;
      friend bool operator < (node a,node b)
{ return a.r>b.r; } } int main() { priority_queue<node>q; return 0; }