3

私は完全に困惑しています。例を見回しても、このソート機能を機能させるのに役立ちませんでした:

void sortRegistryByName(std::list<Transcript>& registry) {
   std::sort(registry.begin(), registry.end(), [](const Transcript &f, const Transcript &s) { return f.name < s.name; }); 
}

上記のコードは、トランスクリプトのリストを name プロパティでソートする必要があります。

そして、トランスクリプトは次のとおりです。

typedef struct Transcript_t {
    std::string name; // Name of the transcript
    std::string student_id;
    std::list<std::pair<std::string, size_t>> grades; // List of (course, grade) pairs
} Transcript;

これをコンパイルしようとすると、ソート機能が原因で、safe_iterators と演算子に関連するエラーの大きな壁が 1 つ発生します。

ここで本当にばかげた間違いを見た人はいますか?私はそれに盲目です。

4

1 に答える 1

7

ランダム アクセス イテレータがないため、std::listの関数を呼び出す必要があります。sort

std::list<Transcript> registry;
registry.sort([](const Transcript &f, const Transcript &s) { return f.name < s.name; });
于 2013-09-23T08:53:03.097 に答える