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