我要声明
map<set<multiset<int>>,int> mymap;
但是 MSVC 2015 给我这个错误:
错误 C2338:C++ 标准不提供此类型的哈希。
如何提供比较运算符?可能这就是这里缺少的东西?
最佳答案
根据要求,
很可能您正在尝试创建 mymap
像这样:
unordered_map<set<multiset<int>>,int> mymap;
unordered_map
的 key 类型是set<multiset<int>>
它没有定义哈希函数。但是,它确实定义了 operator<
.
因此,帖子中给出的定义应该没问题,但您可能使用的是 unordered_map
.
附言使用 set<multiset<int>>
作为 map
的键类型感觉不对。 set::operator<
具有 O(n) 时间复杂度。 multiset::operator<
是一样的。但是,如果您不担心性能,那也没关系。
关于c++ - 如何在 C++ 错误 C2338 中组织 map<set<multiset<int>>,int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970709/