在deque中,front()是頭部元素,back()指的是尾部元素。begin()是指向頭部的迭代器,end()是指向尾部的下一個元素的迭代器。
push_front 頭部進行插入
pop_front 尾部進行刪除
push_back 尾部進行插入
pop_back 尾部進行刪除
deque如果同時進行頭插和尾插的話,他的時間復雜度是o(1),如果是vector的話,時間復雜度是o(n),需要視情況進行選擇進行插入。如果是只有一個單向插法的話,用vector就可以。如果是兩種插入的方式的話,用deque就合適。
deque對象創建,代碼見下:
#include<iostream>
#include<deque>using namespace std;void printDeque(deque<int> &d) {for (deque<int>::iterator iter = d.begin(); iter != d.end(); iter++) {cout << *iter << " ";}cout << endl;
}int main() {// 1 默認構造函數deque<int> q1;cout << "d1: ";printDeque(q1);// 2 初始化列表deque<int> d2_1({ 9, 8, 8, 6, 5 });cout << "d2_1: ";printDeque(d2_1);deque<int> d2_2 = { 1, 8, 8, 8, 5};cout << "d2_2: ";printDeque(d2_2);// 3 迭代器deque<int> d3(d2_2.begin()+1, d2_2.end()-1);cout << "d3: ";printDeque(d3);// 4 全0初始化deque<int> d4(10);cout << "d4: ";printDeque(d4);// 5 deque<int> 變量名(a, b),代表申請了a個空間,初始化值為bdeque<int> d5(8, 6);cout << "d5: ";printDeque(d5);// 6 拷貝構造函數deque<int> d6(d5);cout << "d6: ";printDeque(d6);return 0;}
deque賦值操作,代碼見下:
#include<iostream>
#include<deque>using namespace std;void printDeque(deque<int> &d) {for (deque<int>::iterator iter = d.begin(); iter != d.end(); iter++) {cout << *iter << " ";}cout << endl;
}int main() {deque<int> d = { 9, 8, 5, 2, 1, 1 };cout << "d: ";printDeque(d);// 1 =賦值deque<int> d1;d1 = d;cout << "d1: ";printDeque(d1);// 2 assign(迭代器)deque<int> d2;d2.assign(d1.begin() + 1, d1.end());cout << "d2: ";printDeque(d2);// 3 初始化列表deque<int> d3;d3.assign({ 1, 2, 3, 5, 6, 7 });cout << "d3: ";printDeque(d3);// 4 初始化a個bdeque<int> d4;d4.assign(8, 6);cout << "d4: ";printDeque(d4);return 0;}