我完全被卡住了,查看示例也没有帮助我使这个排序函数工作:
void sortRegistryByName(std::list<Transcript>& registry) {
std::sort(registry.begin(), registry.end(), [](const Transcript &f, const Transcript &s) { return f.name < s.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;
当我尝试编译这个程序时,sort函数会导致大量错误,与safe_iterators和operators有关。
有人发现了什么非常愚蠢的错误吗?我看不到它。
std::sort
需要随机访问迭代器,而std::list
只提供双向迭代器。不过,它有一个成员函数.sort
(http://en.cppreference.com/w/cpp/container/list/sort)可以使用。 - Xeosize_t
-std::list<std::pair<std::string, size_t>> grades;
,考虑到它的上下文,你可能最好使用std::map<std::string, int>
- 假设不会有重复的课程。 - Aesthete