перегрузка оператора компаратора карты

Я пытаюсь использовать компаратор для сравнения ключей карты.

std::map<SomePointer,SomeValue, SomeComparator> testMap;

class SomeComparator
{
SomeComparator( ){ }

bool operator()( const SomePointer& sp1, const SomePointer& sp2) const
{
return sp1 == sp2;
}
}

Мой вопрос заключается в том, нужно ли мне перегружать operator () или что-то еще, чтобы позволить map :: find использовать соответствующий компаратор для сравнения двух указателей и получения совпадающего.

0

Решение

Для карты вам необходимо предоставить < Тип сравнения — «строгий слабый порядок», если быть точным. Он выводит равенство, когда A не меньше, чем B, а B не меньше, чем A.

Но, чтобы ответить на вопрос, который вы фактически задали: если вы предоставляете функтор компаратора, как указано выше, вы перегружаете operator() для этого функтора. В противном случае вы можете перегрузить operator< для вашего типа ключа.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]