加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – unordered_multimap元素插入

发布时间:2020-12-16 09:36:11 所属栏目:百科 来源:网络整理
导读:我尝试使用以下代码将值插入boost unordered_multimap,但由于它没有编译,因此无效.为什么没有access []运算符? insert()方法也不起作用? #include iostream#include boost/unordered_map.hppusing namespace std;int main(){ typedef boost::unordered_mul
我尝试使用以下代码将值插入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||In function 'int main()':
multimap.cpp|19|error: no match for 'operator[]' in '_3d[0]'
multimap.cpp|21|error: no match for 'operator[]' in '_3d[0]'
||=== Build finished: 2 errors,0 warnings ===

解决方法

unordered_multimap和multimap都不支持operator [],因为它没有明确定义它的含义. operator []背后的想法是你可以编写myMap [key]来表示“与myMap中的键相关联的唯一值”.在处理unordered_multimap时,这在数学上没有明确定义;在multimap中可以有许多具有相同键的键值对,并且不清楚您希望具有哪个特定值.

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

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读