queue队列-printer queue
程序员文章站
2024-03-18 08:02:15
...
queue和栈差不多就是普通操作有一些不一样;
stack:
push()入栈
top()出栈一个元素不删除-出栈元素为最后一个入栈元素
pop()出栈,删除
empty()判断非不非空
queue:
push()入队
front()取队列第一个入队的并不删除
pop()出队,删除
empty()判断非不非空
priority:
同队列操作一样只不过
出队front()——为top();
需要可以自己使用自定义方式比较优先级
例如:
实现个位数打的整数优先级反而小的优先队列,
priority_queue< int,vector< int >,cmp > q;
struct cmp{
bool operator() (const int a,const int b) const{
return a%10>b%10;
}
}
sort中也有这样的用法对struct的排序即使在结构体里面bool operator< (const pro &u ) const> {
return ;
}
poj 3125 printer queue
#include<iostream>
#include<cstdio>
#include<queue>
#include<string>
using namespace std;
struct node{
int id;
int va;
};
int main()
{
int t, n, m,a;
node w;
cin >> t;
while (t--&&cin >> n >> m)
{
queue<node>q;
priority_queue<int>p;
int time = 0;
for (int i = 0; i < n; i++)
{
cin >> a;
w.id = i;
w.va = a;
q.push(w);
p.push(a);//优先队列按照int从大到大小
}
while (!q.empty())
{
w = q.front();
q.pop();
int max = p.top();
if (w.id == m&&w.va == max)//是要打印的并且,是目前队列优先级最大
{
time++;
cout << time << endl;
break;
}
if (w.va == max)//只是优先级最大,打印并且弹出
{
p.pop();
time++;
}
else//放到打印队伍最后
q.push(w);
}
}
return 0;
}
上一篇: PAT 1035 插入排序和归并排序
推荐阅读
-
STL中优先队列(priority_queue)的相关操作
-
queue队列-printer queue
-
C++priority_queue容器使用
-
STL之queue容器使用大全
-
C++ STL queue 队列容器使用示例
-
Queue, LifoQueue - 后进先出,PriorityQueue - 优先级队列
-
ERROR 9392 o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s)
-
jmx实现监控weblogic中的jms队列信息(一) 博客分类: jmx jmsweblogicjmx监控queue
-
java中queue接口的使用详解
-
Yii2 队列 shmilyzxt/yii2-queue 简单概述