3

我完全被难住了,四处查看示例并没有帮助我使这种排序功能起作用:

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

上面的代码应该按名称属性对 Transcripts 列表进行排序。

成绩单如下:

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 和操作符相关的错误。

有人在这里看到任何非常愚蠢的错误吗?我对此视而不见。

4

1 回答 1

7

您必须调用std::list'ssort函数,因为它没有随机访问迭代器:

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