1. 程式人生 > >優先佇列用法詳解

優先佇列用法詳解

在優先佇列中,元素被賦予優先順序,當訪問元素時,具有最高階優先順序的元素先被訪問。即優先佇列具有最高階先出的行為特徵。

優先佇列在標頭檔案#include <queue>中;

其宣告格式為:priority_queue <int> ans;//宣告一個名為ans的整形的優先佇列

基本操作有:

empty( )  //判斷一個佇列是否為空

pop( )  //刪除隊頂元素

top( )  //返回優先佇列的隊頂元素

push( )  //加入一個元素

size( )  //返回優先佇列中擁有的元素個數

優先佇列的時間複雜度為O(logn),n為佇列中元素的個數,其存取都需要時間。

在預設的優先佇列中,優先順序最高的先出隊。預設的int型別的優先佇列中先出隊的為佇列中較大的數。

第一種用法(預設從大到小排序):

priority_queue<int> q1;//預設從大到小排序,整數中元素大的優先順序高 

第二種用法(從小到大排序):

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

第二個引數為容器型別;

第三個引數為比較函式。

第三種用法:自定義排序規則

struct node
{
    friend bool operator< (node n1, node n2)
    {
        return n1.priority < n2.priority;
    }
    int priority;
    int value;
};

在該結構中,value為值,priority為優先順序。
通過自定義operator<操作符來比較元素中的優先順序。