【发布时间】:2012-10-25 18:31:05
【问题描述】:
我需要使用不同于默认哈希的哈希表来建立哈希表,所以我写了如下内容:
class foo {
public:
...
private:
struct myhasher {
size_t operator() (myclass bar) { return hash_calculation bar; }
}
static size_t hash_calculation (myclass bar) {
// do some calculation
}
hash_map<myclass, myhasher> myhashmap;
}
它有效。现在由于某种原因,我必须编写一个非静态成员函数来替换 hash_calculation,比如说,它需要一个类的非静态成员作为参数。然后整个事情失败了,因为我不能在嵌套结构中使用非静态方法。
这在某种程度上类似于另一个广泛讨论的问题:如何使用非静态函数进行比较或排序。参见例如: Using a non-static class member inside a comparison function 和 C++ std list sort with custom comparator that depends on an member variable for the object instance 。他们都建立了一个函子而不是一个函数作为比较器。但是在我的情况下,这个技巧不起作用,因为我需要 hash_map 定义中的类名,而不是特定的结构对象。我该怎么办?提前感谢您的帮助!
【问题讨论】:
-
由此返回hash_calculation栏;你的意思是这个 return hash_calculation(bar); 吗?
-
标准 C++ 中没有
hash_map类模板。你的意思是std::unordered_map?
标签: c++ hash static-methods