C++ deque双端队列、deque对象创建、deque赋值操作
在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;}