进程调度队列排序的C++的代码
时间: 2024-05-15 11:12:41 浏览: 9
以下是一个简单的进程调度队列排序的C++代码示例:
```c++
#include <iostream>
#include <queue>
#include <string>
#include <algorithm>
using namespace std;
// 进程结构体
struct Process {
string name; // 进程名
int priority; // 优先级
int burstTime; // 执行时间
};
// 定义比较函数,用于优先队列排序
struct CompareProcess {
bool operator()(const Process& p1, const Process& p2) {
return p1.priority < p2.priority;
}
};
int main() {
// 创建一个优先队列,用于存放进程
priority_queue<Process, vector<Process>, CompareProcess> pq;
// 添加进程
pq.push({"P1", 3, 5});
pq.push({"P2", 1, 8});
pq.push({"P3", 2, 3});
pq.push({"P4", 4, 2});
// 遍历队列,输出进程信息
while(!pq.empty()) {
Process p = pq.top();
cout << "Process " << p.name << " (Priority: " << p.priority << ", Burst Time: " << p.burstTime << ")" << endl;
pq.pop();
}
return 0;
}
```
在上面的代码中,我们首先定义了一个进程结构体 `Process`,包含进程名称、优先级和执行时间。然后,我们定义了一个比较函数 `CompareProcess`,用于将进程按照优先级从小到大排序,这个函数将作为优先队列的第三个参数传入。
在 `main` 函数中,我们创建了一个优先队列 `pq`,并添加了四个进程。然后,我们使用 `while` 循环遍历队列,每次取出队列头部的进程,并输出其信息。
运行以上代码,输出结果如下:
```
Process P4 (Priority: 4, Burst Time: 2)
Process P1 (Priority: 3, Burst Time: 5)
Process P3 (Priority: 2, Burst Time: 3)
Process P2 (Priority: 1, Burst Time: 8)
```
可以看到,输出的进程按照优先级从小到大排序,符合我们的预期。