一、queue
1、特点:先进先出(FIFO—first in first out)
- 只允许在表的前端(front,称为队头)进行删除操作,在表的后端(rear,称为队尾)进行插入操作
2、基本操作
- back() 返回最后一个元素
- empty() 如果队列空则返回真
- front() 返回第一个元素
- pop() 删除第一个元素
- push() 在末尾加入一个元素
- 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())