4

可能的重复:
c++ sort with structs

我试图弄清楚如何在数组中保存的结构中的特定变量上对结构数组进行排序。这是我的代码:

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

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

    // The number of processes
    int numProcesses = 3;

    //Create an array that holds 10 Process structs
    Process *arrayOfProcesses = new Process[numProcesses];

    // Puts values in each pid, burst, and arrival
    arrayOfProcesses[0].pid = 0;
    arrayOfProcesses[0].burst = 8;
    arrayOfProcesses[0].arrival = 2;

    arrayOfProcesses[1].pid = 1;
    arrayOfProcesses[1].burst = 12;
    arrayOfProcesses[1].arrival = 3;

    arrayOfProcesses[2].pid = 2;
    arrayOfProcesses[2].burst = 4;
    arrayOfProcesses[2].arrival = 1;

    // Sort the array based on the arrival time
    // Help! :)
}

我真的希望能够在到达时间对我的代码中的数组进行排序。我已经简化了我的代码,让您大致了解我想要完成的工作。在我的实际代码中,数组是根据文件读取的信息动态填充的。 我知道使用 List 甚至 Vector 会是更好的选择,但我决心使用数组来解决这个问题。

任何有关排序的帮助将不胜感激!:)

4

2 回答 2

4

sort从标准<algorithm>标题中使用:

std::sort(arrayOfProcesses, arrayOfProcesses+numProcesses, [](Process const &a, Process const &b){ return a.arrival < b.arrival; });
于 2012-11-07T07:17:46.297 回答
3

您仍然可以通过添加比较函数将数组与 STL 排序算法一起使用:

#include <algorithm>
bool operator<(const Process& lhs, const Process& rhs)
{
  return lhs.pid < rhs.pid;
}

sort(arrayOfProcesses, arrayOfProcesses + numProcesses);
于 2012-11-07T07:22:20.357 回答