目录
1.创建deque对象
2.插入元素
3.前向遍历
(1)以数组方式遍历
(2)以前向迭代器的方式遍历
4.反向遍历
5.删除元素
6.访问元素
7.其他
1.创建deque对象
头文件:#include<deque>
deque<int> d; //创建没有任何元素的deque对象
deque<float> dd;deque<int> d(10); //创建具有10个整型元素的deque对象ddeque<int> d(10,8.5); //创建具有10个整型的deque对象d,每个元素的值都是8.5
2.插入元素
push_back(i); //从尾部插入元素i,会不断扩张队列
push_front(i); //从头部插入元素i,只将原有的元素覆盖
insert(d.begin()+1,88); //将d[1]位置赋值为88
3.前向遍历
(1)以数组方式遍历
#include<deque>
#include<iostream>
using namespace std;
int main(){deque<int> d;//从尾部连续插入三个元素1 2 3for(int i=1;i<4;i++){d.push_back(i);}for(int i=0;i<d.size();i++)cout<<d[i]<<" ";cout<<endl;//输出结果:1 2 3 return 0;
}
(2)以前向迭代器的方式遍历
#include<deque>
#include<iostream>
using namespace std;
int main(){deque<int> d;//从尾部连续插入三个元素1 2 3for(int i=1;i<4;i++){d.push_back(i);}deque<int>::iterator it;for(it=d.begin();it!=d.end();it++)cout<<*it<<" ";cout<<endl;//输出结果:1 2 3return 0;
}
4.反向遍历
#include<deque>
#include<iostream>
using namespace std;
int main(){deque<int> d;//从尾部连续插入三个元素1 2 3for(int i=1;i<4;i++){d.push_back(i);}//以反向迭代器的方式遍历deque<int>::reverse_iterator rit;for(rit=d.rbegin();rit!=d.rend();rit++)cout<<*rit<<" ";cout<<endl;//输出结果:3 2 1return 0;
}
5.删除元素
可以从双端队列的头部、尾部、中部删除元素,并可以清空双端队列容器。
pop_front(); //从头部删除元素
pop_back(); //从尾部删除元素
erase(d.begin()+1); //从中间删除元素,其参数是迭代器位置
clear() 可以清空双端队列容器
#include<deque>
#include<iostream>
using namespace std;
int main(){deque<int> d;//从尾部连续插入三个元素1 2 3for(int i=1;i<4;i++){d.push_back(i);}deque<int>::iterator it;for(it=d.begin();it!=d.end();it++)cout<<*it<<" ";cout<<endl;//输出结果:1 2 3d.clear();cout<<d.size()<<endl;//输出结果:0return 0;
}
6.访问元素
d.front(); //返回第一个数据
d.back(); //返回最后一个数据
d.begin(); //返回指向第一个数据的迭代器
d.end(); //返回指向最后一个数据下一个位置的迭代器
d.rbegin(); //返回指向反向队列的第一个元素的迭代器(即原队列的最后一个元素)
d.rend(); //返回指向反向队列的最后一个元素的下一个位置(即原队列的第一个元素的前一个位置)
7.其他
更详细的请参见这位博友的 STL系列之一 deque双向队列