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

时间:2014-06-20 15:26:22

标签: c++ c++11 hash stdhash

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

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

1 个答案:

答案 0 :(得分:5)

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

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