错误:static_assert unordered_multimap的"This hash only works for enumeration types"失败



我正在尝试插入

    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>>

最新更新