我尝试使用下面的代码将一个值插入到boost unordered_multimap中,但是由于它没有编译,所以没有工作。为什么没有接线员?
insert()方法也不能工作?
#include <iostream>
#include <boost/unordered_map.hpp>
using namespace std;
int main()
{
typedef boost::unordered_multimap<
int,
boost::unordered_multimap<
int,
boost::unordered_multimap<int, int>
>
> unordered_map;
unordered_map _3d;
_3d[0][0][0] = 10;
_3d[0][0][0].insert(10);
cout << _3d[0][0][0] << endl;
}错误:
multimap.cpp||In函数
'int main()':
multimap.cpp|19|error:与'_3d[0]'中的'operator[]'不匹配
multimap.cpp|21|error:与'_3d[0]'中的'operator[]'不匹配
||===构建完成:2个错误,0警告===
发布于 2011-07-21 19:14:03
unordered_multimap和multimap都不支持operator[],因为它没有很好地定义它的含义。operator[]背后的想法是,您可以编写myMap[key]来表示“与myMap中的key相关联的唯一值”。在处理unordered_multimap时,这在数学上没有很好的定义;在multimap中可能有许多具有相同键的键值对,并且不清楚您希望拥有哪个特定值。
从您给出的示例来看,您似乎真的想要一个标准的unordered_map,而不是一个unordered_multimap。如果您试图使用地图映射来表示某个高维数组,那么您可能只想让每个坐标映射到一个特定的子空间。将unordered_multimap替换为unordered_map应该可以修复这个问题。
希望这能有所帮助!
发布于 2011-07-21 19:11:29
boost::unordered_map doesn't appear to have operator[]。使用查找函数代替。
你在用什么推荐信?
https://stackoverflow.com/questions/6781222
复制相似问题