如何解决用于排序算法的C ++ lambda
我想对一个map<pair<string,int>,int>
dbg进行排序;按值使用lambda:
为此,我有
void test()
{
map<pair<string,int> dbg;
sort( dbg.begin(),dbg.end(),[]( pair<pair<string,int>& lht,pair<pair<string,int>& rht) {
return lht.second > rht.second;
});
}
但是编译失败并出现很多错误。正确的lamda原型在这里是什么?
解决方法
对map
进行排序是没有意义的;它已经被排序,并且您不能在排序后更改排序顺序(除非添加和删除元素,否则该排序根本无法更改,它们将始终处于固定顺序)。如果您想以其他方式对其进行排序,则可以:
- Provide the alternate comparator to
map
,因此可以自然地按照您想要的方式进行排序,或者 - 将条目复制到序列类型(例如
vector
)并进行排序。
在这种情况下,您想按值排序,这对于map
是不可能的,因此选项#2是您唯一的选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。