Переопределить std::hash для использования хэша города Google

#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;