我想对map<pair<string, int>, int>
dbg进行排序;使用lambda:按值
为此,我有
void test()
{
map<pair<string, int>, int> dbg;
sort( dbg.begin(), dbg.end(),
[]( pair<pair<string, int>, int>& lht, pair<pair<string, int>, int>& rht) {
return lht.second > rht.second;
});
}
但是编译失败了,出现了很多错误。什么是正确的lamda原型?
对map
进行排序是无意义的;它已经排序了,你不能在事后通过排序来改变排序顺序(除了添加和删除元素之外,根本不能改变排序顺序,它们总是属于固定的顺序(。如果你想用不同的方式排序,可以选择:
- 为
map
提供备用比较器,以便按您想要的方式自然排序,或者 - 将条目复制到序列类型(例如
vector
(并对其进行排序
在这种情况下,您希望按值排序,这对于map
是不可能的,因此选项#2是您唯一的选项。