Error: static_assert failed "This hash only works for enumeration types" for unordered_multimap

Error: static_assert failed "This hash only works for enumeration types" for unordered_multimap

我正在尝试插入

    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 和阅读其他关于此错误的问题 ( and ) 之后,只有 unordered_map 相反,我得出的结论是我需要提供我自己的哈希函数。但是,这让我感到困惑,因为我读过的其他问题似乎涉及自定义(用户定义)类 的键,而且我不认为我使用的键类型是 "custom." 如果有人能提供这方面的见解,我将不胜感激!

STL 没有为 std::pair 定义散列函数。因此,如果 std::pair<int, int> 是您创建的类型,您需要做同样的事情。您应该声明自己的 std::hash.

实现

但是,这不是我推荐的。相反,您可能会发现使用地图的地图更容易:unordered_map<int, unordered_multimap<int, int>>.