Middle+
47
questionbank

Что нужно сделать, чтобы использовать свой класс в качестве ключа в map или unordered_map?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Для std::map:

Необходимо определить оператор сравнения < для вашего класса.

c

Для std::unordered_map:

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

Способы определения хешера:

  1. Перегрузка std::hash в пространстве имен std (не рекомендуется):

    c
  2. Передача хешера как шаблонного параметра:

    c

В обоих случаях для std::unordered_map также требуется оператор сравнения на равенство ==.