之前已经提出过这个问题,但不是在相同的背景下。
代码:
namespace std
{
template <typename T, typename U>
struct hash < pair <T,U> >
{
size_t operator()
{
return hash<T>()(first) ^ hash<U>()(second);
}
};
}
我正在尝试使用unordered_map,因为元素不需要排序。但这需要哈希比较功能。以下代码生成编译时错误:
“错误:函数定义未声明参数”
问题是我的地图不仅包含内置类型,而是混合:
typedef std::vector<Point> Point_Set;
typedef std::unordered_map < Point_Set, double > Tree;
有关于此的任何想法吗?
答案 0 :(得分:2)
运营商需要将一对作为参数,并使用其中的first
和second
成员:
size_t operator()(pair<T,U> const & pair)
{
return hash<T>()(pair.first) ^ hash<U>()(pair.second);
}
答案 1 :(得分:0)
这里有一些看起来不像C ++的东西。