覆盖 std::hash<std::string> 以使用 Google 的城市哈希

Override std::hash<std::string> to use Google's City Hash

本文关键字:std Google 哈希 城市 string hash lt 覆盖 gt      更新时间:2023-10-16

所以,很简单的问题,因为我有一个脑死亡的时刻…我如何覆盖/替换std::hash<std::string>使用谷歌的城市哈希?

我目前的方法是在std::string周围有一个包装器,然后专门针对std::hash<>。但是这是痛苦的,因为我必须实现几乎与std::string相同的接口,我想避免这种情况。

您不能替换任何现有的专门化,即您不能替换std::hash<std::string>。但是,可以std::unordered_*容器中使用不同的哈希函数对象,例如:

std::unordered_map<std::string, T, my_hash> hash_map;