unordered_multimap元素插入

pan*_*ami 3 c++ boost map

我尝试使用以下代码将值插入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个警告===

tem*_*def 7

既不支持unordered_multimap也不multimap支持,operator[]因为它没有明确定义它意味着什么.背后的想法operator[]是你可以写myMap[key]为" 与in 相关的独特价值".处理a时,这在数学上没有明确定义; 在multimap中可以有许多具有相同键的键值对,并且不清楚您希望具有哪个特定值.keymyMapunordered_multimap

从你给出的例子来看,似乎你真的想要一个标准unordered_map而不是一个标准unordered_multimap.如果您尝试使用地图映射的地图来表示某些更高维的数组,那么您可能只希望将每个坐标映射到一个特定的子空间.更换unordered_multimapunordered_map应该解决这个问题.

希望这可以帮助!