c++中的容器介面卡是幹什麼的呢?我們已有容器(比如vector、list、deque),他們支援的的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子:先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。
c++中定義了3種容器介面卡,它們讓容器提供的介面變成了我們常用的的3種資料結構:棧stack,佇列queue和優先佇列priority_queue。
預設情況下,棧和佇列都是基於deque實現的,而優先順序佇列則是基於vector實現的。
當然,我們也可以指定自己的實現方式。但是由於資料結構的關係,我們也不能胡亂指定。棧的特點是後進先出,所以它關聯的基本容器可以是任意一種順序容器,因為這些容器型別結構都可以提供棧的操作有求,它們都提供了push_back、pop_back和back操作。 佇列queue的特點是先進先出,介面卡要求其關聯的基礎容器必須提供pop_front操作,因此其不能建立在vector容器上;對於優先順序佇列,由於它要求支援隨機訪問的功能,所以可以建立在vector或者deque上,不能建立在list上。
例如:
stack> s1;
stack> s2;
c ++迭代器用於對資料結構中的元素進行順序訪問或隨機訪問。因此,對於根據定義不允許順序或隨機訪問的資料結構,迭代器沒有任何意義。這就是堆疊和佇列沒有迭代器的原因。另一方面,向量和列表允許對元素進行順序和/或隨機訪問,因此迭代器對於導航這些資料結構是有意義的。
c++ stl佇列queue和優先佇列priority_queue的底層實現和用法
c++ stl棧stack的底層實現和用法
C STL 容器介面卡
標準庫提供了三種順序容器介面卡 queue priority queue stack.介面卡是標準庫中通用的 概念,包括容器介面卡 迭代器介面卡和函式介面卡。本質上,介面卡是使一事物的行為類似於另一類事物的行為的一種機制。容器介面卡讓一種已 存在的容器型別採用另一種不同的抽象型別的工作方式實現。例如...
C STL 容器介面卡
1 stack 2 priority queue include 1 基礎介紹 priority queue 優先佇列,其底層是用堆來實現的。模板宣告帶有三個引數 priority queue 其中type為資料型別,container 為儲存資料的容器,functional 為元素比較方式。con...
c STL 之容器介面卡
容器介面卡是乙個封裝了序列容器的類模版,它在一般序列容器的基礎上提供了一些不同功能。它們可以指定底層序列容器的型別。標頭檔案 include 特點 乙個預設封裝了deque雙端佇列容器的介面卡類模版,實現的是乙個 先出的壓入棧。成員函式 作用top 返回乙個棧頂元素的引用,型別為t 如果棧為空,返回...