priority_queue的常見用途
queue為佇列,實現了乙個先進先出的容器。
使用queue,需要新增標頭檔案#include
,還要加上using namespace std;
queue<
typename
> name;
由於佇列是一種先入先出的限制性資料結構,因此只能通過front()來訪問隊首元素,或者通過back()來訪問隊尾元素。
queue<
int> q;
q.front()
;q.back()
;
push()
push(x)把x進行入隊q.push(1);
front()、back()
front()和back()分別獲得隊首元素和隊尾元素。
pop()
pop()令隊首元素出隊q.pop();
empty()
檢測queue是否為空,返回true為空,返回false則非空
size()
返回queue內元素的個數
當實現廣度優先搜尋時,可以用queue來快速的實現乙個佇列。另外,在使用front()和back()前必須先使用empty()判斷佇列是否為空,隊空則會出錯。
優先佇列的底層是用堆來實現的。在優先佇列中,隊首元素一定是當前佇列中優先順序最高的那乙個。
可以在任何時候使用push來向優先佇列中新增元素,優先佇列底層的資料結構堆會自動調整結構,使每次的隊首元素都是當前優先順序最高的。
priority_queue<
typename
> name;
優先佇列中沒有front()和back(),只能通過top()函式來訪問隊首元素。
push()
push(x)將x入隊
top()
訪問隊首元素
pop()
pop()令隊首元素出隊
empty()
判斷佇列是否為空
size()
返回佇列中元素的個數
基本資料型別的優先順序設定
對基本資料型別來說以下兩種定義優先佇列是等價的:
priority_queue<
int> q;
priority_queue<
int,vector<
int>
,less<
int>
> q;
第二種定義方式多了兩個引數。vector
填寫的是用來承載底層堆的容器,只需修改typename即可;less
表示數字大的優先順序大,改為greater
表示數字小的優先順序大。
結構體的優先順序設定
舉例建立乙個結構體:
struct fruit
;
現在希望按水果的**高的為優先順序高(預設),就需要過載小於號「<」。
struct fruit
};
如果想要以**低的優先順序高:
struct fruit
};
priority_queue可以解決一些貪心問題,也可以對dijkstra演算法進行優化。
使用top()函式前,必須用empty()判斷優先佇列是否為空。
C 之路起航 標準模板庫(queue)
queue fifo佇列 先進先出佇列。優先佇列 對佇列中的元素按優先順序的大小輸出。定義 fifo佇列 queue 資料類性 變數名。優先佇列 priority queue 資料型別 變數名。eg fifo佇列 queueque 定義了乙個名為que的整型的先進先出佇列。優先佇列 priority...
C C 標準模板庫(六) Queue
c 佇列是一種容器介面卡,它給予程式設計師一種先進先出 fifo 的資料結構。back 返回最後乙個元素 empty 如果佇列空則返回真 front 返回第乙個元素 pop 刪除第乙個元素 push 在末尾加入乙個元素 size 返回佇列中元素的個數 語法 type back back 返回乙個引用...
C 標準模板類庫(STL)之queue初步
1,stl裡有些什麼?包括三個內容 容器 迭代器 演算法。2,容器有哪些?有stack,vector,queue,deque,list,set,multiset,map,multimap等。中文 棧,向量,佇列,雙端佇列,列表,集合,多重集合,對映,多重對映等。3,queue的兩個好朋友 雙端佇列 ...