queue是佇列,是一種先進先出的資料結構
類模板如下:
template
<
classt,
class
cont
= deque
>
class
queue
;
cont指定實現的型別,預設是deque,也可以用list
定義佇列的示例:
queue<
int> q;
q.
push
(i);
//將i新增到佇列末尾
q.pop()
;//彈出佇列第乙個元素
q.top()
;//返回或修改第乙個元素
q.front()
;//返回或修改第乙個元素 這兩個成員函式在不同的編譯器有不同的支援
q.size()
;//返回佇列元素個數
q.empty()
;//判斷佇列是否為空
q.back()
;//返回佇列最後乙個元素
優先佇列
優先佇列就是對佇列中的元素進行排序。
預設用vector實現,也可以用deque實現
類模板定義:
template
<
classt,
class
container
= vector
,class
compare
= less
>
class
priority_queue
;
t的元素型別
container是容器型別
compare的元素比較器
與set不同,priority_queue是用堆排序來實現的,所以元素在內部不是有序的,但是總還是能保證最大的元素在堆頂
優先佇列定義:
priority_queue
//公升序佇列
priority_queue <
int,vector<
int>
,greater<
int>
> q;
//降序佇列
priority_queue <
int,vector<
int>
,less<
int>
>q;
//greater和less是std實現的兩個函式物件類(就是使乙個類的使用看上去像乙個函式。其實現就是類中實現乙個operator(),這個類就有了類似函式的行為,就是乙個函式物件類了)
q.
push()
;q.top();
//返回優先佇列最上邊的元素
q.pop()
;q.empty()
;q.size()
;
如果是自定義的結構體,可以進行運算子的過載來進行比較排序。
舉例:
priority_queue<
int> q;
q.push(2
);q.push(5
);q.push(6
);q.push(3
);cout
(q.empty()
==false
)cout
<
465
320
STL中queue的使用
基本操作 empty 如果隊列為空返回真 pop 刪除對頂元素 push 加入乙個元素 size 返回優先佇列中擁有的元素個數 top 返回優先佇列對頂元素 在預設的優先佇列中,優先順序高的先出隊。在預設的int型中先出隊的為較大的數。使用方法 標頭檔案 include 宣告方式 1 普通方法 pr...
C STL中queue的使用
queue模版需要定義兩個模版引數,乙個是元素型別,乙個是容器型別,元素型別是必要的,容器型別是可選的,預設為dqueue型別。定義queue物件的示例 如下 queueq1 queueq2 queue的基本操作有 1.入隊 如q.push x 將x元素接到佇列的末端 2.出隊 如q.pop 彈出佇...
C 佇列Queue的使用
今天用到的c 內建的queue佇列來進行重試機制。基本的用法就是入佇列 enqueue 出佇列 dequeue 介面拉取資料,介面可能不穩定會拉取失敗,我將失敗的記錄存入了queue然後進行重試,直到全部成功為止。queue errorqueue new queue 將所有失敗的記錄都存入佇列 er...