pair 对作为 unordered_map 问题的键

2024-01-06

My code:

 typedef pair<int,int> Pair
  tr1::unordered_map<Pair,bool> h;
  h.insert(make_pair(Pair(0,0),true));

Erorr

 undefined reference to `std::tr1::hash<std::pair<int, int> >::operator()(std::pair<int, int>) const'

有什么我需要修复的吗?

thanks


发生这种情况是因为没有专业化std::tr1::hash<Key> with Key = std::pair<int, int>。 你必须专精std::tr1::hash<Key> with Key = std::pair<int, int>声明之前tr1::unordered_map<Pair,bool> h;。 发生这种情况是因为std不知道如何散列pair<int, int>.

以下是如何专业化的示例std::tr1::hash<>

template <>
struct std::tr1::hash<std::pair<int, int> > {
public:
        size_t operator()(std::pair<int, int> x) const throw() {
             size_t h = SOMETHING;//something with x   
             return h;
        }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pair 对作为 unordered_map 问题的键 的相关文章

随机推荐