访问tr1/unordered_map的内部类型哈希函数



我正在摆弄unordered_map类模板,我想为我的类编写一个自定义散列器。它的文档提到为内部类型提供了默认的哈希函数。所以,如果你声明:

std::tr1::unordered_map<std::string, int> foo;

您将自动获得为您定义的散列。

这里有一个很好的例子,如果你想要一个自定义哈希函数,如何提供一个函子。

然而,如果我有一个复杂的类,它有一个std::string成员,我想用它作为unordered_map中插入/删除的键,该怎么办?我不想重写自己的哈希表。我想利用已经为std::string类型编写的内容。

默认哈希函函数由std::hash<T>提供,它返回size_t

因此,您可以组合来自类的几个成员的哈希值,例如通过计算(std::hash<T>()(a) + prime * (std::hash<T>()(b) + prime * std::hash<T>()(c)))

最新更新