这个问题以前曾被问过,但不是在同一上下文中提出的。
代码:
namespace std
{
template <typename T, typename U>
struct hash < pair <T,U> >
{
size_t operator()
{
return hash<T>()(first) ^ hash<U>()(second);
}
};
}
我尝试使用 unordered_map 因为元素不需要排序。但这需要一个哈希比较函数。以下代码会生成编译时错误:
“错误:函数定义未声明参数”
问题是我的 map 不仅仅包含内置类型,而是混合类型:
typedef std::vector<Point> Point_Set;
typedef std::unordered_map < Point_Set, double > Tree;
对此有什么想法吗?
最佳答案
该运算符需要将一对作为参数,并使用其中的 first
和 second
成员:
size_t operator()(pair<T,U> const & pair)
{
return hash<T>()(pair.first) ^ hash<U>()(pair.second);
}
关于c++ - 函数定义未在模板中声明参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10086107/