排序结构的标准阵列上的变量[重复](Sorting a standard array of stru

2019-08-02 09:54发布

可能重复:
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! :)
}

我真的很希望能够在到达时间在我的代码排序的数组。 我已经简化我的代码给你什么,我试图完成一个总体思路。 在我实际的代码的时候,蒋阵列从一个文件中读取信息动态填充。 我知道,使用列表,甚至一个载体可以更好的选择,但我决心想出解决办法使用数组。

与排序任何帮助,将不胜感激! :)

Answer 1:

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

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


Answer 2:

您仍然可以使用与STL排序算法的阵列通过添加一个比较功能:

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

sort(arrayOfProcesses, arrayOfProcesses + numProcesses);


文章来源: Sorting a standard array of structs on a variable [duplicate]