我搞砸了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/