Все, что требуется от ключа, это чтобы он был копируемым и назначаемым.
Порядок на карте определяется третьим аргументом
шаблон (и аргумент для конструктора, если используется). это
по умолчанию до std::less<KeyType>
, по умолчанию используется оператор <
,
но нет необходимости использовать значения по умолчанию. Просто напишите сравнение
оператор (желательно как функциональный объект):
struct CmpMyType
{
bool operator()( MyType const& lhs, MyType const& rhs ) const
{
// ...
}
};
Обратите внимание, что он должен определять строгий порядок, т. Е. Если CmpMyType()( a, b
)
возвращает true, тогда CmpMyType()( b, a )
должен возвращать false, а если
оба возвращают false, элементы считаются равными (члены
тот же класс эквивалентности).