C ++地图比较器

时间:2015-06-19 15:19:34

标签: c++ dictionary

对于声明为:

的c ++地图
map < set<int>,int > x;

编译器使用的默认比较器函数是什么? 使用此语句的代码执行成功,但我不确定它使用的比较器。

3 个答案:

答案 0 :(得分:3)

对于std::map<K, T>,默认比较器为std::less<K>

std::less<K>使用lhs < rhs作为默认比较方式。

在您的情况下,您最终使用:

bool operator<(std::set<int> const& lhs, std::set<int> const& rhs)

答案 1 :(得分:2)

默认情况下,这应解析为

bool operator<(const std::set<int>&, const std::set<int>&)

请参阅here以供参考。

答案 2 :(得分:0)

对于std::mapstd::set,都有一个可选的模板参数,用于定义比较类型(以及分配器的另一个)。使用此参数可以使用任何比较,包括用户定义的函数!

在这两种情况下,默认为std::less

查看每个文档!!

http://www.cplusplus.com/reference/set/set/

http://www.cplusplus.com/reference/map/map/