我搞砸了unordered_map类模板,我想为我的类(class)写一个自定义的哈希器。它的文档提到为内部类型提供默认的哈希函数。因此,如果您声明:

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)))

关于c++ - 访问tr1/unordered_map的固有类型哈希函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5626395/

10-16 03:07