C STL標準庫 雙端佇列deque

2021-10-05 16:48:42 字數 1638 閱讀 4242

其實deque的最大特點就是雙端,其可以實現隊首隊尾都插入的功能

vector:只能插入在隊首,但是提供下標訪問方式。⭐️⭐️⭐️

stack:不支援下標訪問,存入只能存進棧頂,取出最後乙個必須乙個乙個pop。⭐️

queue:只能插入進隊首,不支援下標⭐️⭐️

array:類似陣列(幾乎就是),支援下標,可在任何地方插入⭐️⭐️⭐️⭐️⭐️

deque:支援任意地方插入(insert),不支援下標,可在隊首隊尾插入⭐️⭐️⭐️⭐️

從列表中可見deque的訪問效率非常高,注:個人認為

方法含義

deque

建構函式

push_back

在當前的最後乙個元素之後 ,在 deque 容器的末尾新增乙個新元素

push_front

在 deque 容器的開始位置插入乙個新的元素,位於當前的第乙個元素之前

pop_back

刪除 deque 容器中的最後乙個元素,有效地將容器大小減少乙個

pop_front

刪除 deque 容器中的第乙個元素,有效地減小其大小

emplace_front

在 deque 的開頭插入乙個新的元素,就在其當前的第乙個元素之前

emplace_back

在 deque 的末尾插入乙個新的元素,緊跟在當前的最後乙個元素之後

例項:

#include

#include

int main ();

std::deque<

int> fifth (myints, myints +

sizeof

(myints)

/sizeof

(int))

; std::cout <<

"the contents of fifth are:"

;for

(std::deque<

int>

::iterator it = fifth.

begin()

; it!=fifth.

end();

++it)

std::cout <<

' '<<

*it;

std::cout <<

'\n'

;return0;

}

out:

the contents of fifth are: 16 2 77 29
例項2:

#include

#include

int main (

)while

(myint)

; std::cout <<

"mydeque stores "

<<

(int

) mydeque.

size()

<<

" numbers.\n"

;return0;

}

out:

please enter some integers (enter 0 to end):1 2 3 4 5 0

mydeque stores 6 numbers.

C STl之雙端佇列

deque與vector非常相似,不僅可以在尾部插入和刪除元素,還可以在頭部插入和刪除。不過當考慮到容器元素的記憶體分配策略和操作效能時,deque相對vector較為有優勢。標頭檔案 include 1 deque 建立乙個沒有任何元素的deque物件。deque d 2 deque size t...

C STL之雙端佇列容器

deque雙端佇列容器與vector很類似,採用線性表順序儲存結構。但與vector區別,deque採用分塊的線性儲存結構來儲存資料,每塊的大小一般為512b,將之稱為deque塊,所有的deque塊使用乙個map塊進行管理,每個map資料項記錄各個deque塊的首位址,這樣的話,deque塊在頭部...

C STL之deque雙端佇列

deque與vector非常相似,不僅可在尾部插入和刪除,還可在頭部插入和刪除,但是內部的資料機制和執行效能與vector不同,一般來說,當考慮到容器元素的記憶體分配策略和操作的效能時,deque比vector有優勢。技術原理 deque的元素資料採用分塊的線性結構進行儲存,如下圖所示。deque分...