Для std::map:
Необходимо определить оператор сравнения < для вашего класса.
c
Для std::unordered_map:
Необходимо определить функцию хеширования (хешер) для вашего класса и, если необходимо, оператор сравнения на равенство ==. Стандартный хешер std::hash не умеет хешировать пользовательские типы.
Способы определения хешера:
Перегрузка std::hash в пространстве имен std (не рекомендуется):
c
Передача хешера как шаблонного параметра:
c
В обоих случаях для std::unordered_map также требуется оператор сравнения на равенство ==.