unordered_map с кастомнымными функциями в классе

131
24 января 2019, 00:20

Мне надо хранить в классе соответствия между строками и числами. Порядок не важен, поэтому хочу использовать std::unordered_map, причём строки должны хэшироваться и сравниваться с помощью текущей локали через std::collate::compare() и std::collate::hash().

Как лучше объявить эту структуру в классе, чтобы пользователь не видел реализацию? Проблемы в том, что 1) надо хранить экземпляр std::collate в классе или определять логически непринадлежащие классу функции; 2) надо знать bucket_count для определения структуры, т.к. этот параметр идет до функций хэша и сравнения.

Answer 1

В std::unordered_map уже есть требуемый функционал

Следуем описанию с cppreference , используем шаблонные параметры класса :

std::unordered_map<std::string, int, std::collate::hash, std::collate::compare> my_map;

Проблем никаких нет, класс my_map хранит соответствие строки <---> числа, используя требуемую функцию хеширования и требуемую функцию сравнения.

READ ALSO
Как из бинарника и dll сделать единый .exe файл?

Как из бинарника и dll сделать единый .exe файл?

Файл helloexe, при запуске требует dll'ки, могу закинуть их в папку, но можно ли сделать hello

148
Как реализовать нормальное меню?

Как реализовать нормальное меню?

Есть класс в котором перегружаются операцииВ main происходит тестирование перегрузок, т

166
Вывести 1000 знаков суммы ряда

Вывести 1000 знаков суммы ряда

есть бесконечный ряд

156
Небольшой вопрос по OPEN MP

Небольшой вопрос по OPEN MP

Задание нужно распараллелить с помощью OpenMP

143