轻松修复 - 在多个值上排序双端队列

Ric*_*Sch 0 c++ sorting deque

我试图弄清楚如何在两个值上排序结构的双端队列,而不只是一个.我所拥有的代码就是我所拥有的完美排序arrival,但是如果两个项目相同pid,我希望它们也是pid顺序.我希望我有意义!

例如:

具有pid1和arrival10的a的进程应该在具有pid2和arrival10 的进程之前,即使具有pid1 的进程最初在deque中出现.

struct Process{
    int pid;
    int burst;
    int arrival;
};

int sortOnArrival (Process const &a, Process const &b){
    return a.arrival < b.arrival;
}

int main(int argc, char *argv[]){

    deque<Process> readyQueue;

    // This is just pseudocode, but trust me, it works. :)
    fill(readyQueue);

    sort(readyQueue.begin(), readyQueue.end(), sortOnArrival);
}
Run Code Online (Sandbox Code Playgroud)

Die*_*ühl 6

只需使用合适的比较对象.例如,你可以使用

struct sortOnPidAndArrival {
    bool operator()(Process const& p0, Process const& p1) const {
        return std::tie(p0.pid, p0.arrival) < std::tie(p1.pid, p1.arrival);
    }
};
Run Code Online (Sandbox Code Playgroud)

如果你想知道我为什么使用函数对象而不是函数指针:这个函数对象中的代码可以完全内联.通过函数指针调用不能.