对变量上的标准构造进行排序

Sorting a standard array of structs on a variable

本文关键字:排序 标准 变量      更新时间:2023-10-16

可能的重复:
C 与结构排序

我正在尝试弄清楚如何在阵列中保存的结构中的特定变量上分类构造数组。这是我的代码:

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! :)
}

我真的希望能够在到达时间中对代码中的数组进行分类。我简化了我的代码,以使您对我要完成的工作有了一般的了解。在我的实际代码中,该数组是由文件读取的信息动态填充的。我知道使用列表甚至向量是更好的选择,但是我决心使用数组来弄清楚这一点。

对此进行分类的任何帮助将不胜感激!:)

使用标准<algorithm>标头使用sort

std::sort(arrayOfProcesses, arrayOfProcesses+numProcesses, [](Process const &a, Process const &b){ return a.arrival < b.arrival; });

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

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