У меня есть специализация std::basic_string
, скажем, string_t
, и она такая же , что и std::string
, за исключением того, что третий аргумент шаблона - мой пользовательский распределитель.
станд :: basic_string <>
Вопрос: Как мне определить класс хеш-функторов для этой специализации, используя хеш-функторы, уже предоставленные в стандартной библиотеке C ++?
Я знаю, как определить функтор Hash, но я не знаю, как использовать существующие std::hash<..>
функторы в std
для определения моего собственного. Я не решаюсь писать свои собственные операции хеширования, зная, что оно изобретает колесо и вряд ли будет лучше, чем std::hash<std::string>
, поскольку единственная разница между string_t
и std::string
заключается только в распределителе.
cppreference имеет несколько примеров, но они мне мало помогают - я не хочу создавать временный std::string
объект, используя мой string_t
объект c_str()
метод только для подачи временного объект в std::hash<std::string>
, чтобы получить значение хеша, потому что это влечет за собой выделение временной памяти кучи.
Я использую C ++ 14 и хочу придерживаться стандартной библиотеки.