Переопределить std :: hash & lt; std :: string & gt; использовать Google City Hash

Итак, достаточно простой вопрос, так как у меня мертвый момент мозга. Как я могу переопределить / заменить std::hash<std::string> использовать Google City Hash?

Мой нынешний подход заключается в том, чтобы иметь обертку вокруг std::string а затем специализироваться std::hash<> для этого. Но это больно, так как я должен реализовать практически тот же интерфейс, что и std::string и я хочу избежать этого.

2

Решение

Вы не можете заменить любые существующие специализации, то есть вы не можете заменить std::hash<std::string>, Тем не менее, вы Можно использовать различные объекты хэш-функции с std::unordered_* контейнеры, например:

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

Другие решения


По вопросам рекламы [email protected]