c++ - 如何在 C++ 错误 C2338 中组织 map<set<multiset<int>>,int>

标签 c++ dictionary stl set

我要声明

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/

相关文章:

c++ - 为什么 C++ STL 中的算法、迭代器和容器是分离的

c++ - 通过 Luabind 将 STL 队列暴露给 Lua

C++: "T a = b"-- 复制构造函数还是赋值运算符?

c++ - 在 C++ 中实现 GObject 接口(interface)

c++ - MPI,更大的阵列

javascript - 从本地存储更新字典?

python - 添加字节数组作为字典的键

python - 字典不会以字符串作为键更新

c++ - 比较 -INT_MIN (GCC)

c++ - C2065 'cout' : undeclared identifier