对于声明为:
的c ++地图map < set<int>,int > x;
编译器使用的默认比较器函数是什么? 使用此语句的代码执行成功,但我不确定它使用的比较器。
答案 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)
答案 2 :(得分:0)
对于std::map
和std::set
,都有一个可选的模板参数,用于定义比较类型(以及分配器的另一个)。使用此参数可以使用任何比较,包括用户定义的函数!
在这两种情况下,默认为std::less
查看每个文档!!