Чтобы класс MyClass можно было использовать как ключ в std::map<MyClass, ValueType> и std::unordered_map<MyClass, ValueType>, необходимо:
Для std::map:
Определить оператор < как нестатический член или свободную функцию.
cpp
Для std::unordered_map:
Определить функтор хеширования (hash function) для MyClass.
Определить оператор == для сравнения на равенство.
cpp
Сводная таблица требований:
| Требование | std::map | std::unordered_map | Примечание |
|---|---|---|---|
Оператор < | ✔ | ✘ | Для упорядочивания |
Оператор == | ✘ | ✔ | Для сравнения на равенство |
| Функтор хеширования | ✘ | ✔ | Для вычисления хеша ключа |