C STL 容器介面卡

2021-08-19 10:38:45 字數 1418 閱讀 1027

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 定義了三種容器介面卡...