2015-06-19 5 views
1

Для C++ карты объявлен как:C++ карта компаратор

map < set<int>,int > x; 

Что такое функция сравнения по умолчанию, который использует компилятор?
Мой код, использующий этот оператор, выполнен успешно, но я не уверен в его использовании.

+2

Как вы можете видеть из [любой документации] (http://en.cppreference.com/w/cpp/container/map), компаратор по умолчанию 'станд :: меньше 'for' std :: map '. Это, в свою очередь, переводит '<' на его аргументы, а 'operator <' перегружается для ['std :: set'] (http://en.cppreference.com/w/cpp/container/set/operator_cmp). –

ответ

2

По умолчанию это должно решить для

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

См here для справки.

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) 
0

Для обоего std::map и std::set есть необязательный параметр шаблона, который определяет тип сравнения с помощью этого вы можете использовать любое сравнение, включая определенную пользователем функцию!

В обоих этих случаях, то по умолчанию std::less

Посмотрите на документы для каждого !!

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

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

Смежные вопросы