#include <iostream>
//头文件queue包含循环队列queue 和 优先队列 priority queue优先队列两个容器
#include <queue> //先进先出

using namespace std;

int main()
{
    //循环队列
    queue<int> q;
    q.push(1);                // 从队尾插入
    q.pop();                  // 从队头弹出
    q.front();                //返回队头元素
    cout << q.back() << endl; //返回队尾元素
    //没有clear函数
    q = queue<int>(); //重新初始化

    //优先队列
    // push 把元素插入堆
    // pop 删除堆顶元素
    // top 查询堆顶元素(最大值)
    priority_queue<int> a;                            //大根堆
    priority_queue<int, vector<int>, greater<int>> b; //小根堆

    a.push(1); //插入一个数
    a.top();   //取最大值
    a.pop();   //删除最大值
    struct Rec
    {
        int a, b;
        bool operator > <const Rec &t)const
        {
            return a > t.a;
        }
    } 
    priority_queue<Rec, vector<Rec>, greater<Rec>> d;
    d.push({1, 2});
}