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...