我正在尝试插入
unordered_multimap<pair<int, int>, int>
像这样:
unordered_multimap<pair<int, int>, int> tree;
auto firstPair=make_pair(firstNumber, secondNumber);
tree.insert(make_pair(firstPair, 0));
然而,编译时编译器继续问候以下错误:
error: static_assert failed "This hash only works for enumeration types"
现在,经过一些Google-fu并在此处阅读有关此错误的其他问题(this和this),仅使用unordered_map,我得出的结论是我需要提供我的自己的哈希函数。然而,这让我感到困惑,因为我读过的其他问题似乎涉及自定义(用户定义)类的键,我不认为我使用的键是“自定义”键。如果有人能提供这方面的见解,我将不胜感激!
答案 0 :(得分:1)
STL没有为std::pair
定义哈希函数。因此,如果std::pair<int, int>
是您创建的类型,则需要执行相同的操作。您应该声明自己的std::hash
实现。
然而,这是不我推荐的内容。相反,您可能会发现使用地图地图会更容易:unordered_map<int, unordered_multimap<int, int>>
。