我正在尝试插入
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"
现在,在谷歌搜索和阅读了关于这个错误的其他问题(这个和这个)之后,我得出结论,我需要提供我自己的哈希函数。然而,这让我感到困惑,因为我读过的其他问题似乎涉及自定义(用户定义)类的键,而我不认为我使用的键类型是"自定义"的。如果有人能提供这方面的见解,我将不胜感激!
STL没有为std::pair
定义散列函数。所以你需要做同样的事情如果std::pair<int, int>
是你创建的类型。你应该声明你自己的std::hash
实现。
unordered_map<int, unordered_multimap<int, int>>
。