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

时间:2011-04-11 19:24:07

标签: c++ stl unordered-map

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

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

您自动为您定义了一个哈希。

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

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

1 个答案:

答案 0 :(得分:1)

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

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