STL之雙端佇列

2021-06-26 07:33:06 字數 948 閱讀 6509

deque雙向佇列是一種雙向開口的連續

線性空間

,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和

vector

非常相似,下面列出deque的常用成員函式:

deque.c;

c.assgin(beg,end);

c.assgin(n,elem);

c.at(idx);

c.front();

c.back();

c.begin()

c.end()

c.push_back()

c.push_front()

c.pop_back()

c.pop_front()

c.empty()

c.max_size()

c.resize()

更詳細的:

測試:

//雙向佇列 deque

#include #include #include using namespace std;

int main()

執行結果如下:

另外要注意一點。對於deque和vector來說,盡量少用erase(pos)和erase(beg,end)。因為這在中間刪除資料後會導致後面的資料向前移動,從而使效率低下。

deque的實現比較複雜,內部會維護乙個map(注意!不是stl中的map容器)即一小塊連續的空間,該空間中每個元素都是指標,指向另一段(較大的)區域,這個區域稱為緩衝區,緩衝區用來儲存deque中的資料。因此deque在隨機訪問和遍歷資料會比vector慢。具體的deque實現可以參考《stl原始碼剖析》,當然此書中使用的sgi stl與vs2008所使用的pj stl的實現方法還是有區別的。下面給出了deque的結構圖:

STL之Deque雙端佇列

今天要寫乙個樹的層次遍歷程式,要用到佇列,於是就查了一下deque的資料,如下。deque 總覽 deque 和 vector 一樣都是標準模板庫中的內容,deque 是雙端佇列,在介面上和 vector 非常相似,在許多操作的地方可以直接替換。假如讀者已經能夠有效地使用 vector 容器,下面提...

stl之佇列,雙端佇列,優先佇列

前提 知道什麼是佇列,雙端佇列和優先佇列 1,佇列 標頭檔案 include queue 宣告 queue class q 基本操作 push x 將x壓入佇列的末端 pop 彈出佇列的第乙個元素 隊頂元素 注意此函式並不返回任何值 front 返回第乙個元素 隊頂元素 back 返回最後被壓入的元...

STL雙端佇列 deque

include include include include includeusing namespace std deque採用一塊map 不是stl中的map,是一塊連續空間 作為主控,每個元素都是乙個節點 cur fist last node 指向另一段連續較大的空間 成為緩衝區 預設512...