1、stack
2、priority_queue #include
(1)基礎介紹
priority_queue 優先佇列,其底層是用堆來實現的。
模板宣告帶有三個引數:
priority_queue
其中type為資料型別, container 為儲存資料的容器,functional 為元素比較方式。
container必須是用陣列實現的容器,比如 vector, deque 但不能用 list.
stl裡面預設用的是vector.比較方式預設用operator< , 所以如果你把後面倆個引數預設的話,
預設的優先佇列就是大頂堆,隊頭元素最大。
//等價 最大優先佇列
priority_queue q;
priority_queue,less >;//後面有乙個空格
其中第二個引數( vector ),是來承載底層資料結構堆的容器,第三個引數( less ),則是乙個比較類,less 表示數字大的優先順序高,而 greater 表示數字小的優先順序高。
//最小優先佇列 隊頭最小
priority_queue,greater >q;
優先順序佇列
佇列是先進先出的一種資料結構,優先順序佇列是按照優先順序大小pop出佇列
(2)主要操作:
empty():如果隊列為空,返回true
pop():刪除佇列頂部元素
push():佇列中加入乙個元素
top():檢視佇列頂部元素
size():返回佇列中元素的個數
容器預設是vector,比較方式預設是less,預設比較是operator< ,產生的結果預設是大根堆(最大堆)
(3)幾種宣告方法:
priority_queuepq1; //大根堆
priority_queue, greater> pq2; //知道如何產生小根堆(最小堆)了吧?
priority_queuepq3 ; //自定義結點,大根堆,
此時要過載operator<
priority_queue, cmp > pq4; //自定義結點,小根堆,
cmp是自己寫的比較函式,因為greater沒定義,過載opreator>沒用
C STL 容器介面卡
標準庫提供了三種順序容器介面卡 queue priority queue stack.介面卡是標準庫中通用的 概念,包括容器介面卡 迭代器介面卡和函式介面卡。本質上,介面卡是使一事物的行為類似於另一類事物的行為的一種機制。容器介面卡讓一種已 存在的容器型別採用另一種不同的抽象型別的工作方式實現。例如...
c STL 之容器介面卡
容器介面卡是乙個封裝了序列容器的類模版,它在一般序列容器的基礎上提供了一些不同功能。它們可以指定底層序列容器的型別。標頭檔案 include 特點 乙個預設封裝了deque雙端佇列容器的介面卡類模版,實現的是乙個 先出的壓入棧。成員函式 作用top 返回乙個棧頂元素的引用,型別為t 如果棧為空,返回...
容器介面卡(棧容器介面卡 佇列容器介面卡)
我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...