佇列(queue)抽象體現了先進先出。fifo即 first infirst out的儲存和檢索策略。進入佇列的物件被放在尾部,下乙個被取出的元素取自佇列的首部。標準庫提供了兩種風格的佇列 fifo 佇列(稱作queue)以及priority_queue(優先順序佇列)。
priority_queue 允許使用者為佇列中包含的元素項建立優先順序,它沒有把新元素放在佇列尾部,而是放在比它優先順序低的元素前面。定義優先順序佇列的使用者決定怎樣確定優先順序。要使用這兩種佇列,必須包含相關的標頭檔案:#include
佇列和priority_queue 支援的全部操作見下表
priority_queue的元素被強加了順序關係,以便元素可以從大到小管理。這裡所謂最大即等價於擁有最高優先順序,預設情況下,元素的優先順序由底層元素型別相關的小於操作符執行。如果希望改寫預設的小於操作符,可以顯式地提供乙個函式或函式物件來排序優先順序佇列的元素。
優先佇列用法
在優先佇列中,優先順序高的元素先出佇列。
標準庫預設使用元素型別的
《操作符來確定它們之間的優先順序關係。
優先佇列的第一種用法,也是最常用的用法:
priority_queue
qi; 通過
《操作符可知在整數中元素大的優先順序高。
故示例1中輸出結果為:96
532第二種方法:
在示例1中,如果我們要把元素從小到大輸出怎麼辦呢?
這時我們可以傳入乙個比較函式,使用functional.h函式物件作為比較函式。
priority_queue
, greater >qi2; 其中
第二個引數為容器型別。
第二個引數為比較函式。
故示例2中輸出結果為:23
569第三種方法:
自定義優先順序。
struct
node
intpriority;
intvalue;};
在該結構中,value為值,priority為優先順序。
通過自定義operator
《操作符來比較元素中的優先順序。
在示例3中輸出結果為:
優先順序 值95
8261
2314
但如果結構定義如下:
struct
node
intpriority;
intvalue;};
則會編譯不過(g++編譯器)
因為標準庫預設使用元素型別的
《操作符來確定它們之間的優先順序關係。
而且自定義型別的
《操作符與》操作符並無直接聯絡,故會編譯不過。 //
**清單
#include#include
#include
using
namespace stdnamespace std;
struct
node
intpriority;
intvalue;
};int
main()
;
//示例1
priority_queueqi;
for(i = 0; i < len; i++)
qi.push(a[i]);
for(i = 0; i < len; i++)
cout
/示例2
priority_queue, greater >qi2;
for(i = 0; i < len; i++)
qi2.push(a[i]);
for(i = 0; i < len; i++)
cout
/示例3
priority_queueqn;
node b[len];
b[0].priority = 6; b[0].value = 1
; b[
1].priority = 9; b[1].value = 5
; b[
2].priority = 2; b[2].value = 3
; b[
3].priority = 8; b[3].value = 2
; b[
4].priority = 1; b[4].value = 4;
for(i = 0; i < len; i++)
qn.push(b[i]);
cout
<<"
優先順序"
<<'\t'
<<"值"
return
0;
CSS的優先權
css2.1 中規定了關於css 規則specificity 特異性 的計算方式,用乙個四位的數字串 注 css2 中是用三位 來表示,最後以specificity 的高低判斷css 的優先權。specificity 具體的計算規則 元素的style 樣式屬性,加1,0,0,0。每個id 選擇符 i...
優先權排程演算法
include include include include includeusing namespace std define maxn 100 int time 0 定義時間,為全域性變數,第乙個程序到達時為0 typedef structproducer 程序結構體 float rep pr...
CSS樣式優先權
當同乙個 html 元素被不止乙個樣式定義時,會使用哪個樣式呢?一般而言,所有的樣式會根據下面的規則層疊於乙個新的虛擬樣式表中,其中數字 1擁有最高的優先權。1.內聯樣式 在 html 元素內部 2.內部樣式表 位於 標籤內部 3.外部樣式表 4.瀏覽器預設設定 因此,內聯樣式 在 html 元素內...