加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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; });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读