оператор <перегрузка для сравнения типов std :: map? (Я хочу отсортировать в порядке убывания ..) - PullRequest
4 голосов
/ 28 декабря 2011

Я столкнулся с проблемой, которую я хочу определить карту, которая сортируется внутри по убыванию первого.если первый не является первичным типом, например, если это класс, я могу просто перегрузить «<» внутри этого класса, но я не знаю, как обращаться с типом int.Любое предложение? </p>

Большое спасибо !!

Ответы [ 3 ]

11 голосов
/ 28 декабря 2011

Добавить компаратор:

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

По умолчанию less<int>.

1 голос
/ 28 декабря 2011

Вы можете указать компаратор при создании карты (это необязательный аргумент конструктора).

например:.

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

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

Обратите внимание, что мне нужно было явно указать и третий параметр шаблона.

[ Примечание: я бы настоятельно посоветовал вам не перегружать оператор < для выполнения > ... ]

0 голосов
/ 28 декабря 2011

Посмотрите на реализацию std :: less: http://www.cplusplus.com/reference/std/functional/less/ Вы можете написать собственный компаратор и использовать его вместе с картой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...