【发布时间】:2015-03-23 03:23:59
【问题描述】:
根据对this question 的公认答案,可以使用std 的特化来为用户定义的类型提供哈希函数。
#include <unordered_set>
#include <stdint.h>
struct FooBar {
int i;
};
namespace std {
template <> struct hash<FooBar>
{
size_t operator()(const FooBar & x) const
{
return x.i;
}
};
}
int main(){
std::unordered_set<FooBar> foo(0);
}
但是,documentation 似乎暗示自定义哈希函数也可以显式传递给构造函数,我想为这个哈希函数使用命名函数。
但是,我当前的尝试遇到了编译错误。
#include <unordered_set>
#include <stdint.h>
struct FooBar {
int i;
};
const size_t hashFooBar(const FooBar& foo) {
return foo.i;
}
int main(){
std::unordered_set<FooBar> foo(0, hashFooBar);
}
什么是正确的模板魔法和方法签名来完成这项工作?
【问题讨论】: