2015-06-19 57 views
1

对于C++地图:C++地图比较声明如下

map < set<int>,int > x; 

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

+2

正如从[任何文档】参见(http://en.cppreference.com/w/cpp/container/map)时,比较默认为'的std :: less 'for std :: map '。这反过来将'<'转换为它的参数,''std :: set'](http://en.cppreference.com/w/cpp/container/set/operator_cmp)重载了'operator <'。 –

回答

2

对于默认这个应该下定决心

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

参考见here

3

对于std::map<K, T>,默认比较器为std::less<K>。使用lhs < rhs作为比较的默认方式。利用这一点,你可以使用

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