4

重複の可能性:
構造体を使用した 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! :)
}

到着時にコード内の配列をソートできるようにしたいと思っています。私が達成しようとしていることの一般的なアイデアを提供するために、コードを単純化しました。私の実際のコードでは、ファイルによって読み取られた情報から配列が動的に埋められます。 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 に答える