假设我有一个地图,键为字符,值为整数。基于黑红树的属性,每次插入新的pair,map都会按照char排序。在所有插入之后,我想再次按它的值(即整数)对我的地图进行排序。我的问题是,我可以通过自己的比较功能来做到这一点吗?这是代码:
sort(mymap.begin(), mymap.end(), MyComp);
class MyComp
{
public:
bool operator()(const pair<char, int>& x, const pair<char, int>& y) const
{
return x.second > y.second;
}
};
我的代码无法编译,但我不知道为什么我不能这样做。谁能帮我?
此外,如果这不是解决问题的好方法,还有其他方法吗?
我可以想到一种方法是创建另一个映射并通过交换值和键再次插入,它可以工作但浪费更多空间。谢谢!