在看書之前一直認為棧和佇列都是屬於容器中的一部分呢,今天看完書發現自己又傻了,概念混淆不清啊,這是病,要治!!然後就有了這篇筆記。
除了順序容器外,標準庫還定義了三個順序介面卡:期盼好久的stack、queue和priority_queue。看完這個就覺得,哇,c++大牛們真是便利了後代無數人啊,真有一種:都寫好了,拿去隨意用的趕腳。廢話不多說,繼續我的筆記事業,雖然不精,但可以了解乙個大概,想知道最底層的實現請看stl原始碼解析哦!
q:什麼是介面卡?
a:介面卡是一種機制,把已有的東西改吧改吧、限制限制,從而讓它適應新的邏輯。需要指出,容器、迭代器和函式都有介面卡。
stack 堆疊介面卡 ( 可用的容器型別 vector deque list)
queue 佇列介面卡 ( 可用的容器型別 deque list)
priority_queue 優先順序佇列 (可用的容器型別 deque vector)
針對這三個介面卡,stack和queue就不多說了,不知道的話就是沒有好好學資料結構這門課了,只簡單介紹一下priority_queue,允許為佇列中的元素建立優先順序,新加入的元素會排在所有優先順序比它低的已有元素之前。典型例子,銀行排隊,vip客戶和vvip客戶以及普通客戶,辦理業務時的優先權,還有軍人優先等一系列例項,將客戶和軍人等都看成是佇列中的元素就ok啦。
下面的例子用三種介面卡將順序容器list分別包裝成stack、queue和priority_queue。
//stack 用法:
#include
#include //堆疊介面卡標頭檔案
#include
using
namespace
std;
int main(void)
cout
<<"出棧:"
for (i=0;icout
0; }
//queue用法:
#include
#include
#include
using
namespace
std;
int main()
//priority_queue 用法:
#include
#include
#include
using
namespace
std;
int main()
容器介面卡(棧容器介面卡 佇列容器介面卡)
我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...
容器介面卡
容器介面卡通常是讓一種已存在的容器型別採用另一種不同的抽象型別的工作方式實現,一般情況下,它的初始化需要傳遞乙個容器作為引數,而它所有的操作也是在這個容器上實現的。標準庫提供了三種順序容器介面卡 stack queue priority queue,使用它們時需要包含 include 和 inclu...
容器介面卡
容器介面卡 stl 中包含三種介面卡 棧stack 佇列queue 和優先順序priority queue 介面卡是容器的介面,它本身不能直接儲存元素,它儲存元素的機制是呼叫另一種順序容器去實現,即可以把介面卡看作 它儲存乙個容器,這個容器再儲存所有元素 stl 中提供的三種介面卡可以由某一種順序容...