双端队列
要头文件
两边都可入队出队
创建、构造
//deque 双端队列 需要包含queque头文件
void text06() {
deque<int> d1;
//默认构造函数
deque<int> d2(10);
//初始化大小为10
deque<int> d3(10, 1);
//长度为10,数值为1
deque<int>d4(d3);
//d3初始化d4
deque<int>d5(d3.begin(), d3.begin() + 3);
//构造函数将[beg,end)中的函数拷贝给本身
for (auto i = d5.begin(); i != d5.end(); i++) {
cout << *i << " ";
}
}
添加、插入
void text07() {
deque<int>d1;
//队头添加元素
d1.push_front(4);
//队尾添加元素
d1.push_back(5);
deque<int>::iterator it = d1.begin();
d1.insert(it, 2);//begin()位置插入2
d1.insert(d1.cbegin(), 3, 9);//插入3个9
deque<int>d2 = { 11,22 };
d1.insert(d1.begin(), d2.end() - 1, d2.end());//d1开头插入d2的队尾元素
//迭代传出d1所有元素
for (auto i = d1.begin(); i != d1.end(); i++) {
cout << *i << " ";
}
}
删除、出队
void text08() {
deque<int>d1;
for (int i = 0; i < 10; i++) {//循环赋值
d1.push_back(i);
}
//头部出队
d1.pop_front();//删除0
//尾部出队
d1.pop_back();//删除9
deque<int>::iterator it = d1.begin();
d1.erase(it);//删除1
d1.erase(d1.begin(), d1.begin() + 2);//删除2 3
for (auto i = d1.begin(); i != d1.end(); i++) {
cout << *i << " ";
}
d1.clear();
for (auto i = d1.begin(); i != d1.end(); i++) {
cout << *i << " ";
}
}
访问(at|下标访问)
void text09() {
deque<int> d1 = { 1,2,3,4,5,6 };
//下标访问
cout << d1[2] << endl;
for (int i=0; i < d1.size(); i++) {
cout << d1[i] << " ";
}
cout << endl;
//at访问
cout << d1.at(4) << endl;
cout << d1.front();
cout << d1.back();
try {
cout << d1.at(40) << endl;
}
catch (exception e) {
cout << e.what() << endl;
}
}
大小、空
void text10() {
deque<int> d1 = { 1,2,3,4,5 };
cout << d1.size() << endl;
cout << d1.max_size() << endl;
d1.resize(0);//改变个数
cout << d1.size() << endl;
if (d1.empty()) {
cout << "没有元素了" << endl;
}
}
前插入、交换(assign\swap)
void text11() {
deque<int>d1;
d1.assign(3, 1);//d1的前三个元素赋值为1
deque<int>d2;
d2.assign(3, 2);
for (auto i = d1.begin(); i != d1.end(); i++) {
cout << *i << " ";
}
cout << endl;
for (auto i = d2.begin(); i != d2.end(); i++) {
cout << *i << " ";
}
cout << endl;
d2.swap(d1);
for (auto i = d1.begin(); i != d1.end(); i++) {
cout << *i << " ";
}
cout << endl;
for (auto i = d2.begin(); i != d2.end(); i++) {
cout << *i << " ";
}
cout << endl;
}