队列只能队尾插入队头弹出
名字 循环队列 优先队列
不同点
性质:1,2,3插入1,2,3弹出 | 特点:与插入无关,弹出时从最大的一个先弹出
定义方式:queue<int>q; | 定义方式:
| priority_queue<int>q;//默认返回的最大值(大根堆)
q.push(1);//表示从队尾插入1 | priority_queue<int,vector<int>,greater<in>q;
q.pop();//表示弹出队头 | //返回最小值(小根堆)
a.front();//表示返回队头 | 注意:在优先队列中定义了一个大根堆,要重载 <
a.back();//表示返回队尾 | 在优先队列中定义了一个小根堆,要重载 >
| 重载小于号(大根堆)
| struct Rec
| {
| int a,b;
| bool operator<(const Rec & t)const
| return a<t.a;
| };
| 重载大于号(小根堆)
| struct Rec
| {
| int a,b;
| bool operator>(const & t)const
| return a>t.a;
| };
| 重载仅当我们定义的是结构题才用
| priority_queue<Rec>r;这样才要重载
|
| q.push(1);//表示插入元素1
| q.push({1,2,5,5})
| q.pop()//表示删除顶元素
| q.top() //表示查询顶元素
|