std::unordered_map - функтор с operator().">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpUhHs 184 of 696 menu
◀ ▶

Своя хеш-функция для std::unordered_map в C++

Для пользовательского типа ключа стандартный хеш может быть недоступен или неудобен.

Третий параметр шаблона std::unordered_map - функтор с operator(), который по ключу возвращает std::size_t. Запишем ключ как структуру с одним целым, хеш возьмем из этого поля, и создадим словарь:

#include <unordered_map> struct Cell { int id; }; struct CellHash { std::size_t operator()(Cell key) const { return static_cast<std::size_t>(key.id); } }; bool operator==(Cell a, Cell b) { return a.id == b.id; } std::unordered_map<Cell, int, CellHash> grid = {{{5}, 50}}; std::cout << grid[{5}] << "\n";

Объявите структуру Tag с полем int code, функтор TagHash с operator(), возвращающим это поле, и std::unordered_map<Tag, std::string, TagHash> с парой ключ 3 и строка "c". Выведите значение для этого ключа.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить