C 容器介面卡

2021-09-12 22:34:04 字數 1985 閱讀 3656

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 介面卡是標準庫中乙個通用的概念,包...