2

我正在尝试插入

    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 代替,我得出的结论是我需要提供自己的哈希函数。但是,这让我感到困惑,因为我读过的其他问题似乎涉及自定义(用户定义)类的键,我不认为我使用的键类型是“自定义”。如果有人可以对此提供见解,我将不胜感激!

4

1 回答 1

1

STL 没有为std::pair. 所以你需要做和std::pair<int, int>你创建的类型一样的事情。您应该声明自己的std::hash.

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

于 2016-09-18T04:12:41.507 回答