我正在研究关于C ++中的调度算法(FCFS)的项目。我需要做的所有事情都是甘特图。这是一个例子:
如果只是到达时间我可以排序,但我对如何根据到达时间对进程ID进行排序感到困惑。
这是我尝试根据到达时间对进程ID进行排序。
for (i=0; i<n-1; i++){
for (j=0; j<n-i-1; j++){
if (at[i]>at[i+1]){
temp = pid[i+1];
pid[i+1] = pid[i];
pid[i] = temp;
}
}
}
答案 0 :(得分:1)
只是众多实现中的一个,可以给出答案
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
class Process {
public:
Process(std::string name, size_t pid) : name(name), pid(pid) {}
std::string name {"default"};
size_t pid {0};
};
int main() {
std::vector<Process> v {
Process {"p1", 1}, Process {"p2", 2}, Process {"p6", 6},
Process {"p3", 3}, Process {"p0", 0}
};
std::sort(
v.begin(),
v.end(),
[](const Process & a, const Process & b) -> bool {
return a.pid > b.pid;
}
);
for (auto value : v)
std::cout << value.name << ": " << value.pid << std::endl;
}
输出:
答案 1 :(得分:0)
您可以使用STL以更简单的方式解决问题,而无需使用2个循环
['created', 'edited', 'published', 'rejected', 'unpublished']
}