1、什麼是介面卡
2、容器介面卡
3、 為什麼將stack、queue和priority_queue稱作為容器介面卡
雖然stack、queue、priority_queue中也可以存放元素,但在stl中並沒有將其劃分在容器的行列,而是將其稱為容器介面卡,這是因為每個容器在底層都有自己的實現方式,而stack、queue、priority_queue只是在底層將其他容器進行了封裝。
這裡實現了棧的相關介面,底層容器使用的是vector,也可使用雙端佇列deque 介面
功能void push(const t& x)
元素入棧
void pop()
元素出棧
cosnt t& top()
取棧頂元素
size_t size()
返回棧中元素個數
bool empty()
判棧空
#pragma once
#include #include using namespace std;
namespace cxys
void pop()
const t& top()
size_t size() const
bool empty() const
};void teststack()
cout << endl;
}}
2、queue這裡實現了佇列的相關介面,底層容器使用的是list,也可使用deque 介面
功能void push(const t& x)
元素入隊
void pop()
元素出隊,從隊頭出
const t& front()
取隊頭元素
const t& back()
取隊尾元素
size_t size()
返回隊中元素的個數
bool empty()
判隊空
#pragma once
#include #include using namespace std;
namespace cxyq
void pop()
const t& front()
const t& back()
size_t size() const
bool empty() const
private:
container _con;
};void testqueue()
cout << endl;
}}
3、優先順序佇列請參考:
1、為什麼stl選擇deque作為stack和queue的底層預設容器
stack是一種後進先出的特殊線性資料結構,因此只要具有push_back()和pop_back()操作的線性結構,都可以作為stack的底層容器,比如vector和list都可以;
queue是先進先出的特殊線性資料結構,只要具有push_back和pop_front操作的線性結構,都可以作為queue的底層容器,比如list。但是stl中對stack和queue預設選擇deque作為其底層容器,主要是因為:
stack和queue不需要遍歷(因此stack和queue沒有迭代器),只需要在固定的一端或者兩端進行操作。
在stack中元素增長時,deque比vector的效率高;queue中的元素增長時,deque不僅效率高,而且記憶體使用率高。
參考博文:
容器介面卡(棧容器介面卡 佇列容器介面卡)
我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...
C 容器介面卡
除了順序容器外,標準庫還定義了三個順序容器介面卡 stack,queue和priority queue。介面卡是一種機制,能夠使某種事物行為看起來像另外一種事物。乙個容器介面卡接受一種已有的容器型別,使其行為看起來像一種不同的型別。所有容器介面卡都支援的操作和型別 操作和型別 說明size type...
C 容器介面卡
除去順序容器vector 向量,可變大小陣列 deque 雙端佇列 list 雙向鍊錶 forward list 單向鍊錶 array 固定陣列大小,array的大小不可變 外,標準庫還定義了三個順序容器介面卡 stack queue priority queue 介面卡是標準庫中乙個通用的概念,包...