一、queue

1、特点:先进先出(FIFO—first in first out)

  • 只允许在表的前端(front,称为队头)进行删除操作,在表的后端(rear,称为队尾)进行插入操作
    在这里插入图片描述

2、基本操作

  1. back() 返回最后一个元素
  2. empty() 如果队列空则返回真
  3. front() 返回第一个元素
  4. pop() 删除第一个元素
  5. push() 在末尾加入一个元素
  6. size() 返回队列中元素的个数

二、priority_queue优先队列

1、优先队列:

  • 可以插入新元素
  • 自动排序,可以快速取出所有元素的最值。

优先队列是一种容器适配器,它的 第一个元素总是包含元素的最大值。类似于堆,可以随时插入新的元素,只有堆中最大的元素可以被访问(优先队列队首元素)。
2、基本操作

①声明
最基本格式:
priority_queue<结构类型> 队列名;

根据优先队列的定义:

template <class T, class Container = vector<T>,
  class Compare = less<typename Container::value_type> > class priority_queue;

我们也可以使用以下声明方式
基本格式中默认为less排序,但建议还是下面这种方式):
从大到小:priority_queue<int,vector<int>,less<int> >q;
从小到大:priority_queue<int,vector<int>,greater<int> >q;

tip:“>”不要两个拼在一起。

②q.size();//返回q里元素个数

③q.empty();//返回q是否为空,空则返回1,否则返回0

④q.push(k);//在q的末尾插入k

⑤q.pop();//删掉q的第一个元素

⑥q.top();//返回q的第一个元素(注意区别:queue为front())