c++打印队列
时间: 2023-07-01 11:26:37 浏览: 146
可以使用STL中的队列类来实现打印队列,具体实现代码如下:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n, m, priority;
queue<pair<int, int>> q;
priority_queue<int> pq;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> priority;
q.push(make_pair(i, priority));
pq.push(priority);
}
int time = 0;
while (!q.empty()) {
int index = q.front().first;
int p = q.front().second;
q.pop();
if (p == pq.top()) {
pq.pop();
time++;
if (index == m) {
cout << time << endl;
break;
}
}
else {
q.push(make_pair(index, p));
}
}
return 0;
}
```
该代码中,使用了一个pair类型的队列q来存储每个任务的编号和优先级,同时使用一个优先队列pq来存储所有任务的优先级,以便于判断当前出队的任务是否为当前优先级最高的任务。在每次出队时,如果当前任务的优先级最高,则将其从队列中删除,并更新时间,如果当前任务为所需查找的任务,则输出时间并结束程序,否则将其重新加入队列中等待下次出队。
阅读全文