我想宣布
map<set<multiset<int>>,int> mymap;
但是MSVC 2015给了我这个错误:
错误C2338:C ++标准没有为此类型提供哈希。
我如何提供比较运算符?可能这里缺少什么?
答案 0 :(得分:1)
根据要求,
很可能你是这样想创建mymap
:
unordered_map<set<multiset<int>>,int> mymap;
unordered_map
的密钥类型是set<multiset<int>>
,它没有定义哈希函数。但是,它确实定义了operator<
。
所以,帖子中给出的定义应该没问题,但你可能正在使用unordered_map
。
P.S。使用set<multiset<int>>
作为map
的关键类型感觉不对。 set::operator<
具有O(n)时间复杂度。 multiset::operator<
是一样的。但是,如果你不担心表现,那很好。