C 標準模板庫 queue

2021-10-06 03:55:30 字數 1911 閱讀 8733

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的兩個好朋友 雙端佇列 ...