如何以相反的顺序对地图进行排序
How can I sort a map with a pair as a key in reverse order?
>我有一张地图
map< std::pair<double, long>, object > myMap;
基本上我希望它按那对排序。 我怎样才能对它进行排序,以便我的double
按降序排列,我的长按升序排列。
所以通常在插入时我会得到({3.2, 5}, {3.2, 6}, {4, 1})
但我想要的是得到({4, 1}, {3.2, 5}, {3.2, 6})
. 我想我可以开始考虑自己的算法,但我希望有一种方法可以做到这一点,地图可以让您与std::greater
反向排序。 有什么建议吗?
没有标准的比较器可以做你想做的事。提供您自己的比较器,给出您想要的顺序:
typedef std::pair<double, long> key; // for convenience
struct compare_keys {
bool operator()(key const & lhs, key const & rhs) {
if (lhs.first < rhs.first) return false;
if (rhs.first < lhs.first) return true;
return lhs.second < rhs.second;
}
};
并使用第三个(可选)模板参数来指定此参数,而不是std::less
std::map<key, object, compare_keys> myMap;
您可以通过比较修改后的对来稍微缩短(并且可以混淆)这一点:
return std::make_pair(-lhs.first, lhs.second)
< std::make_pair(-rhs.first, rhs.second);
相关文章:
- 是否有任何C++功能可以对地图进行排序?
- 如何使地图按值C++排序
- 我正在尝试按降序对地图进行排序,但没有得到预期的结果?
- 尝试按值对地图进行排序,但出现错误
- 对双精度地图进行排序
- 如何在OMNeT++中对地图进行排序?
- 多地图<矢量<int>>,字符>如何排序?
- 少的专业化<>适用于地图但不适用于排序
- 常量地图的意外排序
- C++按值对unordered_map或地图进行排序
- 如何对其中包含地图的列表进行排序
- 为什么我无法使用函数按值对地图进行排序?
- 如何在地图中插入对象以保持其排序
- 根据地图值的属性对地图进行排序
- C++,根据秒迭代对地图内容进行排序
- 如何以相反的顺序对地图进行排序
- 在 c++ 中对地图进行排序
- 获取按地图值排序的映射键向量的最快方法
- 标准::地图按值大小排序(设置<int>)
- 对基于地图C++集合重新排序的有效方法