#include <iostream>
#include <queue>
#include <vector>
#include <deque>

using namespace std;

int main(){
    //deque双端队列支持随机存储 是和vector类似 deque相当于拓展版的vector
    //vector在数组结尾插入删除是O(1)的 在数组开头插入删除是O(n)的
    //deque在数组开头结尾插入删除都是O(1)的
    //deque虽然看起来弔 但是运行效率平均下来比其他vector 队列 栈的慢 而且慢很多
    //因为他的常数比较大
    
    deque<int> a;
    a.begin(), a.end();
    a.front(), a.back();
    
    a.push_back(1);
    //是指在最后插入一个元素
    a.push_front(1);
    //是指在开头插入一个元素 因为注释在一行会隐藏掉下划线 所以分两行
    
    a[0];//是指随机访问一个元素
    a.pop_back();
    //弹出最后一个元素
    a.pop_front();
    //弹出第一个元素
    
    a.clear();//清空一个deque
    
    
    return 0;
    //队列和堆完全不一样 为甚么 把优先队列和堆放到队列的头文件呢?不知道
    //队列是用堆实现的
    //函数调用用的那个栈和这个栈是不一样的 函数调用指的是逻辑上的栈 是用汇编实现的
}