首先,當考慮到記憶體配置和執行效能的時候,使用std::deque要比std::vector好。
Deque總覽
deque和vector一樣都是標準模板庫中的內容,deque是雙端隊列,在介面上和vector非常相似,在許多操作的地方可以直接替換。假如讀者已經能夠有效地使用vector容器,下面提供deque的成員函數和操作,進行對比參考。
函數 |
描述 |
c.assign(beg,end) c.assign(n,elem) |
將[beg; end)區間中的資料賦值給c。 將n個elem的拷貝賦值給c。 |
c.at(idx) |
傳回索引idx所指的資料,如果idx越界,拋出out_of_range。 |
c.back() |
傳回最後一個資料,不檢查這個資料是否存在。 |
c.begin() |
傳回迭代器重的可一個資料。 |
c.clear() |
移除容器中所有資料。 |
deque<Elem> c deque<Elem> c1(c2) Deque<Elem> c(n) Deque<Elem> c(n, elem) Deque<Elem> c(beg,end) c.~deque<Elem>() |
建立一個空的deque。 複製一個deque。 建立一個deque,含有n個資料,資料均已預設構造產生。 建立一個含有n個elem拷貝的deque。 建立一個以[beg;end)區間的deque。 銷毀所有資料,釋放記憶體。 |
c.empty() |
判斷容器是否為空白。 |
c.end() |
指向迭代器中的最後一個資料地址。 |
c.erase(pos) c.erase(beg,end) |
刪除pos位置的資料,傳回下一個資料的位置。 刪除[beg,end)區間的資料,傳回下一個資料的位置。 |
c.front() |
傳回地一個資料。 |
get_allocator |
使用建構函式返回一個拷貝。 |
c.insert(pos,elem) c.insert(pos,n,elem) c.insert(pos,beg,end) |
在pos位置插入一個elem拷貝,傳回新資料位元置。 在pos位置插入>n個elem資料。無傳回值。 在pos位置插入在[beg,end)區間的資料。無傳回值。 |
c.max_size() |
返回容器中最大資料的數量。 |
c.pop_back() |
刪除最後一個資料。 |
c.pop_front() |
刪除頭部資料。 |
c.push_back(elem) |
在尾部加入一個資料。 |
c.push_front(elem) |
在頭部插入一個資料。 |
c.rbegin() |
傳回一個逆向隊列的第一個資料。 |
c.rend() |
傳回一個逆向隊列的最後一個資料的下一個位置。 |
c.resize(num) |
重新指定隊列的長度。 |
c.size() |
返回容器中實際資料的個數。 |
C1.swap(c2) Swap(c1,c2) |
將c1和c2元素互換。 同上操作。 |