2

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

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

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

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

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

4

1 回答 1

1

默认的散列函子由std::hash<T>which提供size_t

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

于 2011-04-11T19:27:01.830 回答