如何在C ++中使用键的最大值对地图进行排序

时间:2014-04-08 07:12:58

标签: c++

我正在尝试使用定义map<double,deque<Object>>对地图进行排序 最大值为double(key),但默认情况下,map采用key的最小值。如何按双键的最大值对地图进行排序。

提前致谢

2 个答案:

答案 0 :(得分:3)

您无法对地图进行重新排序,但您可以使用以相反顺序对自身进行排序的地图。 std::map具有用于排序的比较仿函数的第三个模板参数。默认值为std::less<key_type>。您可以使用std::greater<key_type>

轻松使用反向排序
std::map<double, std::deque<Object>, std::greater<double>> m;

您最接近排序地图的方法是根据具有不同排序标准的原稿创建一个新地图:

std::map<double, std::deque<Object>> orig = ....;
std::map<double, std::deque<Object>, std::greater<double>> m(orig.begin, orig.end());

答案 1 :(得分:0)

map是键值对,键一般必须是唯一的,否则则值类型可以是向量或列表而不是单个类型的元素值,如hash_map&gt;其中MyType是struct或class。在查询时使用键来搜索值,但没有排序的概念。否则,您需要使用向量。