Middle+
29
0
questionbank

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

Answer from sobes.tech neural network

Для std::map:

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

c

Для std::unordered_map:

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

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

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

    c

Для std::map:

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

c

Для std::unordered_map:

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

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

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

    c

Register or sign in to get access to full answers for all questions from the question bank.

hashequalitycustom-classesdata-structuresperformance-considerations