Deque和vector很像,區別是deque能夠在兩頭插入和刪除。ios
要使用deque,需加上頭文件:函數
#include <deque>
因此,當知足一下條件時,使用deque:spa
Operation | Effect |
deque<Elem> c | Default constructor:建立一個空的deque |
deque<Elem> c(c2) | Copy constructor:經過複製c2建立c |
deque<Elem> c = c2 | Copy constructor:經過複製c2建立c |
deque<Elem> c(rv) | Move constructor:creates a new deque,taking the contents of the rvalue rv |
deque<Elem> c = rv | Move constructor:creates a new deque,taking the contents of the rvalue rv |
deque<Elem> c(n) | 使用默認構造函數建立一個有n個元素的deque |
deque<Elem> c(n, elem) | 建立一個有n個元素的deque,而且使用elem初始化 |
deque<Elem> c(beg, end) | 建立一個使用範圍[beg,end)初始化的deque |
deque<Elem> c(initList) | 建立一個使用initList初始化的deque |
deque<Elem> c = initList | 建立一個使用initList初始化的deque |
c.~deque() | 銷燬全部元素並釋放內存 |
Operation | Effect |
c.empty() | 返回容器是否爲空(至關於size() == 0) |
c.size() | 返回當前元素的個數 |
c.max_size() | 返回可能存在元素的最大個數 |
c.shrink_to_fit() | 收縮capacity,適應元素個數 |
c1 == c2 | 返回c1是否等於c2 |
c1 != c2 | 返回c1是否不等於c2 |
c1 < c2 | 返回c1是否小於c2 |
c1 > c2 | 返回c1是否大於c2 |
c1 <= c2 | 返回c1是否小於等於c2 |
c1 >= c2 | 返回c1是否大於等於c2 |
c[idx] | 返回索引爲idx的元素(無邊界檢查) |
c.at[idx] | 返回索引爲idx的元素(有邊界檢查,拋出異常) |
c.front() | 返回第一個元素(不檢查元素是否存在) |
c.back() | 返回最後一個元素(不檢查元素是否存在) |
Operation | Effect |
c.push_back(elem) | 將elem附加到末尾 |
c.pop_back() | 移除最後一個元素,不返回 |
c.push_front(elem) | 將elem附加到開頭 |
c.pop_front() | 移除第一個元素,不返回 |
c.insert(pos, elem) | 將elem插入到pos以前的位置,並返回新元素的位置 |
c.insert(pos, n, elem) | 在pos以前的位置開始插入n個elem,並返回新插入的第一個元素的位置 |
c.insert(pos, beg, end) | 將[beg, end)的值插入到從pos以前的位置,並返回第一個新元素的位置 |
c.insert(pos, initlist) | 將initlist的值插入到從pos以前的位置,並返回第一個新元素的位置 |
c.emplace(pos, args...) | 將args插入到pos以前的位置,並返回第一個新元素的位置 |
c.emplace_back(args...) | 將args附加到末尾 |
c.emplace_front(args...) | 將args附加到開頭 |
c.erase(pos) | 移除pos所指的元素,並返回下一個元素位置 |
c.erase(beg, end) | 移除範圍[beg,end)的元素,並返回下一個元素的位置 |
c.resize(num) | 設置元素個數爲num,若是增加了,使用默認構造函數初始化 |
c.resize(num, elem) | 設置元素個數爲num,若是增加了,使用elem初始化 |
c.clear() | 移除全部元素 |
#include<iostream> #include<deque> #include<string> #include<algorithm> #include<iterator> using namespace std; int main() { //create empty deque of string deque<string> coll; //insert several elements coll.assign( 3, "string"); coll.push_back("last string"); coll.push_front("first string"); //print elements separated by newlines copy(coll.cbegin(), coll.cend(), ostream_iterator<string>(cout, "\n")); cout << endl; //remove first and last element coll.pop_front(); coll.pop_back(); //insert "another" into every element but the first for(unsigned i = 1; i < coll.size(); ++i) { coll[i] = "another " + coll[i]; } //change size to four elements coll.resize( 4, "resized string"); //print elements separated by newlines copy( coll.cbegin(), coll.cend(), ostream_iterator<string>(cout, "\n")); }
輸出:code