C++ deque 双端队列

 1.双端队列常用操作

deq.front():返回双向队列的头部元素。
deq.push_front(x):把元素x插入到双向队列的头部。
deq.pop_front():弹出双向队列的第一个元素。

deq.back():返回双向队列的尾部元素。
deq.push_back(x):把元素x插入到双向队列的尾部。
deq.pop_back():弹出双向队列的尾部元素。

2.双端队列的代码展示

#include "queue"
int main() {
    //定义一个双向队列
    deque<int> de;
    
    //两种入队列方式
    de.push_back(1);//尾部插入元素
    de.push_back(2);
    de.push_front(3);//头部插入元素
    
    //三种访问方式
    cout<<de[0]<<endl; //按照下标访问元素,3
    cout<<de.front()<<endl;//返回头元素的值,3
    cout<<de.back()<<endl;//返回尾元素的值,2
    
    //两种出队方式
    de.pop_front();//头部出队
    de.pop_back();//尾部出队
    
    //此时队列中只有元素1
    //遍历队列中的元素
    while(!de.empty()){
        cout<<de.front()<<endl; //1
        de.pop_front();
    }
    return 0;
}

3.双端队列的leetcode题目

找固定滑动窗口的最大值:https://github.com/AntonioSu/leetcode/blob/master/problems/239.SlidingWindowMaximum.md

计算只有加减乘除运算符和空格的中缀表达式:https://github.com/AntonioSu/leetcode/blob/master/problems/227.BasicCalculatorII.md

找到数组中中间的数值 https://github.com/AntonioSu/leetcode/blob/master/problems/295.FindMedianfromDataStream.md

原文地址:https://www.cnblogs.com/AntonioSu/p/11911226.html