我們已有的容器(比如vector、list),這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子:先進後出,入棧出棧等等,
此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。
c++定義了三種容器介面卡,他們讓容器提供的介面變成了我們常用的資料結構:棧(先進後出),佇列(先進先出),優先順序佇列。
對於棧來說,主要操作包括:出棧,進棧,棧裡元素個數,棧是否為空,棧頂元素;
對於佇列來說,主要操作包括:進隊,出隊,隊裡元素個數,隊是否為空,隊頭元素。
注:下面**所用的順序表和煉表相關**再這篇部落格中:
接下來將會把棧和佇列的容器設配器**展開:
棧容器介面卡
#pragma once
#include"list.h"
#include"seqlist.h"
template> //預設引數 對於棧來說,介面卡預設是順序表
//container就是介面卡,container是乙個模板形參,模板實參傳的是什麼型別,container就是什麼型別
class stack
void pop() //出棧
size_t size()
bool empty()
t& top() //返回棧頂元素
private:
container _con;
};void teststackcon()
佇列容器介面卡
#pragma once
#include"list.h"
#include"seqlist.h"
//佇列容器介面卡
//佇列先進先出
templateclass queue
void pop() //出隊
size_t size()
bool empty()
t& front() //隊頭元素
private:
container _con;
};void testqueuecon()
有了容器介面卡,棧和佇列就可以用順序表和煉表來做模板引數進行操作。 容器介面卡
容器介面卡通常是讓一種已存在的容器型別採用另一種不同的抽象型別的工作方式實現,一般情況下,它的初始化需要傳遞乙個容器作為引數,而它所有的操作也是在這個容器上實現的。標準庫提供了三種順序容器介面卡 stack queue priority queue,使用它們時需要包含 include 和 inclu...
容器介面卡
容器介面卡 stl 中包含三種介面卡 棧stack 佇列queue 和優先順序priority queue 介面卡是容器的介面,它本身不能直接儲存元素,它儲存元素的機制是呼叫另一種順序容器去實現,即可以把介面卡看作 它儲存乙個容器,這個容器再儲存所有元素 stl 中提供的三種介面卡可以由某一種順序容...
容器介面卡
在看書之前一直認為棧和佇列都是屬於容器中的一部分呢,今天看完書發現自己又傻了,概念混淆不清啊,這是病,要治!然後就有了這篇筆記。除了順序容器外,標準庫還定義了三個順序介面卡 期盼好久的stack queue和priority queue。看完這個就覺得,哇,c 大牛們真是便利了後代無數人啊,真有一種...