我尝试使用以下代码将值插入boost unordered_multimap,但由于它没有编译,因此无效。为什么没有access []运算符?
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 ||在函数
'int main()'
中:
multimap.cpp | 19 |错误:'operator[]'
中的'_3d[0]'
不匹配 multimap.cpp | 21 |错误:'operator[]'
中的'_3d[0]'
不匹配 || ===构建完成:2个错误,0个警告===
答案 0 :(得分:7)
unordered_multimap
和multimap
都不支持operator[]
,因为它没有明确定义它的含义。 operator[]
背后的想法是,您可以将myMap[key]
写为“key
中与myMap
相关联的唯一值。”处理unordered_multimap
时,这在数学上没有明确定义;在multimap中可以有许多具有相同键的键值对,并且不清楚您希望具有哪个特定值。
从您提供的示例中,您似乎确实希望拥有标准unordered_map
而不是unordered_multimap
。如果您尝试使用地图映射的地图来表示某些更高维的数组,那么您可能只希望将每个坐标映射到一个特定的子空间。用unordered_multimap
替换unordered_map
应该可以解决这个问题。
希望这有帮助!
答案 1 :(得分:0)
boost::unordered_map
doesn't appear to have operator[]
。请改用查找函数。
您使用的是什么参考?