我尝试使用以下代码将值插入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;
}
Run Code Online (Sandbox Code Playgroud)
错误:
multimap.cpp ||在功能
'int main()':
multimap.cpp | 19 |错误:不对应的'operator[]'在'_3d[0]'
multimap.cpp | 21 |错误:不对应'operator[]'于'_3d[0]'
|| ===构建完成:2个错误,0个警告===
既不支持unordered_multimap也不multimap支持,operator[]因为它没有明确定义它意味着什么.背后的想法operator[]是你可以写myMap[key]为" 与in 相关的独特价值".处理a时,这在数学上没有明确定义; 在multimap中可以有许多具有相同键的键值对,并且不清楚您希望具有哪个特定值.keymyMapunordered_multimap
从你给出的例子来看,似乎你真的想要一个标准unordered_map而不是一个标准unordered_multimap.如果您尝试使用地图映射的地图来表示某些更高维的数组,那么您可能只希望将每个坐标映射到一个特定的子空间.更换unordered_multimap用unordered_map应该解决这个问题.
希望这可以帮助!