如何组织map <set <multiset <int>&gt;,int&gt;在C ++中错误C2338

时间:2017-05-15 02:19:49

标签: c++ dictionary stl set

我想宣布

map<set<multiset<int>>,int> mymap;

但是MSVC 2015给了我这个错误:

错误C2338:C ++标准没有为此类型提供哈希。

我如何提供比较运算符?可能这里缺少什么?

1 个答案:

答案 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<是一样的。但是,如果你不担心表现,那很好。