佇列的特點是先進先出。通常都把佇列比喻成排隊買東西,大家都很守秩序,先排隊的人就先買東西。但是優先佇列有所不同,它不遵循先進先出的規則,而是根據佇列中元素的優先權,優先權最大的先被取出。通常把優先佇列比喻成現實生活中的列印。乙個列印店裡有很多印表機,每台機器的效能不一樣,有的印表機列印很快,有的印表機列印速度很慢。當這些印表機陸陸續續列印完自己的任務時進入排隊等候狀態。如果我這個時候要列印乙份檔案,我選的不是第乙個排隊的印表機,而是效能最好,列印最快的印表機。
重點:優先順序佇列,是要看優先順序的,誰的優先順序更高,誰就先得到許可權。不分排隊的順序!
基本操作:
empty() 如果隊列為空返回真
pop() 刪除對頂元素
push() 加入乙個元素
size() 返回優先佇列中擁有的元素個數
top() 返回優先佇列對頂元素
在預設的優先佇列中,優先順序高的先出隊。在預設的int型中先出隊的為較大的數。
使用方法:
標頭檔案:
#include
宣告方式:
1、普通方法:
priority_queueq;
//通過操作,按照元素從大到小的順序出隊
2、自定義優先順序:
struct cmp
};priority_queue, cmp>q;//定義方法
//其中,第二個引數為容器型別。第三個引數為比較函式。
3、結構體宣告方式:
struct node
}; priority_queueq;//定義方法
//在該結構中,y為值, x為優先順序。
//通過自定義operator《操作符來比較元素中的優先順序。
//在過載」<」時,最好不要過載」>」,可能會發生編譯錯誤
示例:平板檢視列印?
01
#include "iostream"
02
#include "vector"
03
#include "queue"
04
using
namespace
std;
05
int
c[100];
06
struct
cmp1
07
12
};
13
14
struct
cmp2
15
22
};
23
24
struct
node
25
31
};
32
33
priority_queue<
int
>q1;
34
priority_queue<
int
, vector<
int
>, cmp1>q2;
35
priority_queue<
int
, vector<
int
>, cmp2>q3;
36
priority_queueq4;
37
38
queue<
int
>qq1;
39
queueqq2;
40
41
int
main()
42
53
cout << endl;
54
while
(!q4.empty())
55
59
// cout << endl;
60
}
61
return
0;
62
}
stl中優先佇列的使用
STL中優先佇列的使用
佇列的特點是先進先出。通常都把佇列比喻成排隊買東西,大家都很守秩序,先排隊的人就先買東西。但是優先佇列有所不同,它不遵循先進先出的規則,而是根據佇列中元素的優先權,優先權最大的先被取出。通常把優先佇列比喻成現實生活中的列印。乙個列印店裡有很多印表機,每台機器的效能不一樣,有的印表機列印很快,有的印表...
STL中棧 佇列和優先佇列的使用
stl standard template library,即標準模板庫,stl可分為容器 containers 迭代器 iterators 空間配置器 allocator 配接器 adapters 演算法 algorithms 仿函式 functors 六個部分。其中,容器分為三類 序列式容器,容...
STL 優先佇列 簡明使用
定義 每次top 出來的,都是佇列中優先順序最高的。但,注意,佇列中個元素的相對位置不變。標頭檔案 宣告方式 priority queuename 注 type 可以是任意型別,但是非內建型別需要自己寫輔助比較函式 過載 號也是可以的,因為優先佇列內部是通過 去比較大小的,但是 不行。建議用過載 的...