c – 按属性对对象进行排序
发布时间:2020-12-16 09:47:39 所属栏目:百科 来源:网络整理
导读:我完全被难倒了,看看这些例子并没有帮助我让这个排序功能起作用: void sortRegistryByName(std::listTranscript registry) { std::sort(registry.begin(),registry.end(),[](const Transcript f,const Transcript s) { return f.name s.name; }); } 上面的
我完全被难倒了,看看这些例子并没有帮助我让这个排序功能起作用:
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和运算符相关的内容. 有人在这里看到任何真正愚蠢的错误吗?我对它视而不见. 解决方法
你必须调用std :: list的sort函数,因为它没有随机访问迭代器:
std::list<Transcript> registry; registry.sort([](const Transcript &f,const Transcript &s) { return f.name < s.name; }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |