错误:static_assert失败“此哈希仅适用于enordered_multimap的枚举类型”

时间:2016-09-18 04:06:11

标签: c++ hash 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并在此处阅读有关此错误的其他问题(thisthis),仅使用unordered_map,我得出的结论是我需要提供我的自己的哈希函数。然而,这让我感到困惑,因为我读过的其他问题似乎涉及自定义(用户定义)类的键,我不认为我使用的键是“自定义”键。如果有人能提供这方面的见解,我将不胜感激!

1 个答案:

答案 0 :(得分:1)

STL没有为std::pair定义哈希函数。因此,如果std::pair<int, int>是您创建的类型,则需要执行相同的操作。您应该声明自己的std::hash实现。

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