运营商LT;重载std :: map的int类型比较? (我希望它按降序排序..)

时间:2011-12-28 18:27:34

标签: c++ stl

我遇到了一个问题,我想定义一个地图,它按照第一个降序排列内部。如果第一个不是主要类型,就像它是一个类,我可以重载“<”在那个类中,但我不知道如何处理int类型。有什么建议吗?

非常感谢!!

3 个答案:

答案 0 :(得分:11)

添加比较器:

#include <functional>
map<int, value_type, greater<int>> m;

默认值为less<int>

答案 1 :(得分:1)

您可以在创建地图时指定比较器(它是可选的构造函数参数)。

e.g:

bool my_compare(int x, int y) { return y < x; }

std::map<int,T,bool(*)(int,int)> my_map(my_compare);

请注意,我还需要明确指定第3个模板参数。

[注意:我强烈建议您不要重载<运算符以执行> ... ]

答案 2 :(得分:0)

查看std :: less实现:http://www.cplusplus.com/reference/std/functional/less/ 您可以编写自己的比较器并将其与map一起使用。