#c #c 11 #hash #stdhash
#c #c 11 #хэш #stdhash
Вопрос:
Итак, достаточно простой вопрос, поскольку у меня тупой момент.. Как я могу переопределить / заменить std::hash<std::string>
, чтобы использовать хэш города Google?
Мой текущий подход заключается в том, чтобы создать оболочку, std::string
а затем специализироваться std::hash<>
на этом. Но это болезненно, поскольку мне приходится реализовывать практически тот же интерфейс, что и, std::string
и я хочу избежать этого.
Ответ №1:
Вы не можете заменить какие-либо существующие специализации, т. Е. Вы не можете заменить std::hash<std::string>
. Однако вы можете использовать другие объекты хэш-функции с std::unordered_*
контейнерами, например:
std::unordered_map<std::string, T, my_hash> hash_map;