按属性对对象排序

时间:2013-09-23 08:44:57

标签: c++ sorting c++11 lambda

我完全被难倒了,看看例子并没有帮助我让这个排序功能起作用:

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;

当我尝试编译时,sort函数会导致一大堆错误,其中包含与safe_iterators和operator相关的错误。

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

1 个答案:

答案 0 :(得分:7)

你必须调用std::list的{​​{1}}函数,因为它没有随机访问迭代器:

sort