前言:
STl是个好东西,虽然他在不开O2的条件下会跑的很慢,但他着实会让你的代码可读性大大提高,令你的代码看起来简单又整洁。
双端队列:
顾名思义,双端队列是有两个头的,一个対首指针,一个队尾指针,先进先出或是先进后出都可以实现。
基本操作:
(1) deque<int> dq 定义一个int类型的双端队列dq
(2) deque<int> dq(15) 队列dq具有15个元素单位
(3) deque<int> dq(15,10) 队列dq内15个元素初始值均为10
(4) dq.push_back(x) 将x放入dq的末端
(5) dq.push_front(z) 将x放入dq的前端
(6) dq.size() 返回队列中元素的个数
扫描二维码关注公众号,回复:
2563414 查看本文章
(7) dq.pop_front() 弹出队列的前端元素
(8) dq.pop_back() 弹出队列的后端元素
(7) dq.front() 返回队列的前端元素
(8) dq.back() 返回队列的后端元素
代码实现:
1 #include<cstdio> 2 #include<queue> 3 using namespace std; 4 const int maxn=1e5+5; 5 deque<int> dq; 6 int a[maxn]={0,1,2,3,4,5,6,7,8,9,10}; 7 int main(){ 8 dq.push_front(a[1]),dq.push_front(a[2]),dq.push_front(a[3]); 9 dq.push_back(a[4]),dq.push_back(a[5]),dq.push_back(a[6]); 10 dq.push_front(a[7]),dq.push_front(a[8]); 11 dq.push_back(a[9]),dq.push_back(a[10]); 12 dq.pop_front(),dq.pop_front(); 13 dq.pop_back(),dq.pop_back(); 14 int n=dq.size();//n=6 15 for(int i=1;i<=n;i++){ 16 printf("%d ",dq.front()); 17 dq.pop_front(); 18 } 19 return 0; 20 }
单调队列: