覆盖std :: hash <std :: string>以使用Google的City Hash

Nim*_*Nim 2 c++ hash c++11 stdhash

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

我目前的方法是有一个包装std::string,然后专门std::hash<>为此.但这很痛苦,因为我必须实现几乎相同的界面std::string,我想避免这种情况.

Die*_*ühl 5

您无法替换任何现有的专业化,即您无法替换std::hash<std::string>.但是,您可以使用与std::unordered_*容器不同的散列函数对象,例如:

std::unordered_map<std::string, T, my_hash> hash_map;
Run Code Online (Sandbox Code Playgroud)