C 容器介面卡的理解

2021-10-04 19:03:04 字數 2610 閱讀 7019

介面卡是一種設計模式(設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、**設計經驗的總結),該模式是將乙個類的介面轉換成客戶希望的另外乙個介面。

雖然stack、queue、priority_queue中也可以存放元素,但在stl中並沒有將其劃分在容器的行列,而是將其稱為容器介面卡,這是因為每個容器在底層都有自己的實現方式,而stack、queue、priority_queue只是在底層將其他容器進行了封裝,比如:

**示例:

namespace bit

void

push

(const t& x)

void

pop(

) t&

top(

)const t&

top(

)const

size_t size()

const

bool

empty()

const

private

: con _c;};

}namespace bit

void

push

(const t& x)

void

pop(

) t&

back()

const t&

back()

const

t&front()

const t&

front()

const

size_t size()

const

bool

empty()

const

private

: con _c;};

}namespace bit

template

<

class

inputiterator

>

priority_queue

(inputiterator first, inputiterator last):c

(first, last)

bool

empty()

const

size_t size()

const

t&top(

)const

void

push

(const t & x)

void

pop(

)private

: sequence c;

compare comp;};

}

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不僅效率高,而且記憶體使用率高。

總結一句話 :deque在兩端進行增長和刪除的速度是最快的

要點總結:

stack

queue

預設介面卡

deque

deque

可選介面卡

vector、list

list

需要操作

push => push_back、pop => pop_back、top => back

push => push_back、pop => pop_front、back => back、front=> front

priority_queue:

#include (仿函式)

預設介面卡:vector

預設比較方式:less

可選介面卡:deque

可選比較方式:greater

#include (演算法)

構造 => make_heap

push => push_back + push_heap

pop => pop_front + pop_heap

top => front

仿函式:可以當成函式使用的類,方法是過載函式呼叫運算子("()")

容器介面卡(棧容器介面卡 佇列容器介面卡)

我們已有的容器 比如vector list 這個容器支援的操作很多,比如插入,刪除,迭代器訪問等等。而我們希望這個容器表現出來的是棧的樣子 先進後出,入棧出棧等等,此時,我們沒有必要重新動手寫乙個新的資料結構,而是把原來的容器重新封裝一下,改變它的介面,就能把它當做棧使用了。c 定義了三種容器介面卡...

C 容器介面卡

1 什麼是介面卡 2 容器介面卡 3 為什麼將stack queue和priority queue稱作為容器介面卡 雖然stack queue priority queue中也可以存放元素,但在stl中並沒有將其劃分在容器的行列,而是將其稱為容器介面卡,這是因為每個容器在底層都有自己的實現方式,而s...

C 容器介面卡

除了順序容器外,標準庫還定義了三個順序容器介面卡 stack,queue和priority queue。介面卡是一種機制,能夠使某種事物行為看起來像另外一種事物。乙個容器介面卡接受一種已有的容器型別,使其行為看起來像一種不同的型別。所有容器介面卡都支援的操作和型別 操作和型別 說明size type...