Middle
29
0
questionbank

Что необходимо сделать для того, чтобы использовать класс в качестве ключа в unordered_map?

Answer from sobes.tech neural network

Для использования класса в качестве ключа в std::unordered_map необходимо:

  1. Реализовать оператор == для сравнения экземпляров вашего класса на равенство. unordered_map использует его для проверки на наличие ключа.
  2. Реализовать хэш-функцию для вашего класса. unordered_map использует ее для вычисления хэша ключа и определения корзины, в которую поместить элемент. Стандартная библиотека предоставляет std::hash для базовых типов. Для пользовательских классов можно либо перегрузить шаблон std::hash, либо предоставить собственную функцию/функитор и передать ее как третий аргумент шаблона unordered_map.

Пример:

cpp

Для использования класса в качестве ключа в std::unordered_map необходимо:

  1. Реализовать оператор == для сравнения экземпляров вашего класса на равенство. unordered_map использует его для проверки на наличие ключа.
  2. Реализовать хэш-функцию для вашего класса. unordered_map использует ее для вычисления хэша ключа и определения корзины, в которую поместить элемент. Стандартная библиотека предоставляет std::hash для базовых типов. Для пользовательских классов можно либо перегрузить шаблон std::hash, либо предоставить собственную функцию/функитор и передать ее как третий аргумент шаблона unordered_map.

Пример:

cpp

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

unordered-mapcustom-typeshashingequality-comparisonkey-requirementsdata-structures