如何在c++; 我总是在C++中使用多级映射,比如 map < /C>,但是我找不到一个非常有效的方法来更新它或创建它。假设我想将一个点(1,2)插入到用于计算点的地图中,我将执行以下操作: map<int,map<int,int>> totalmap; if (totalmap.find(1)==totalmap.end()){ map<int,int> map1; map1[2]=1; totalmap[1]=map1; } else{ auto& map1 = totalmap[1]; if (map1.find(2)==map1.end()) map1[2]=1; else map1[2]++; } map-totalmap; if(totalmap.find(1)=totalmap.end()){ 地图map1; map1[2]=1; totalmap[1]=map1; } 否则{ auto&map1=totalmap[1]; if(map1.find(2)=map1.end()) map1[2]=1; 其他的 map1[2]++; }

如何在c++; 我总是在C++中使用多级映射,比如 map < /C>,但是我找不到一个非常有效的方法来更新它或创建它。假设我想将一个点(1,2)插入到用于计算点的地图中,我将执行以下操作: map<int,map<int,int>> totalmap; if (totalmap.find(1)==totalmap.end()){ map<int,int> map1; map1[2]=1; totalmap[1]=map1; } else{ auto& map1 = totalmap[1]; if (map1.find(2)==map1.end()) map1[2]=1; else map1[2]++; } map-totalmap; if(totalmap.find(1)=totalmap.end()){ 地图map1; map1[2]=1; totalmap[1]=map1; } 否则{ auto&map1=totalmap[1]; if(map1.find(2)=map1.end()) map1[2]=1; 其他的 map1[2]++; },c++,map,C++,Map,当我需要创建3级或4级地图时,我必须编写太多代码。我想一定有比这更好的方法。我能找到的唯一方法是使用multimap将所有键组合为一个键,但有时我确实需要逐个查询键。std::map的操作符[](如容器、集合、multimap等)的工作如下: 如果键参数不在容器中,则将值与该键一起添加到映射(如果是集,则添加键)并返回 如果键参数在容器中,则返回值 正如@IgorTandetnik建议的那样,如果您想添加(例如:一个计数器作为两级map)的信息,那么代码totalmap[1][2]++将起作

当我需要创建3级或4级地图时,我必须编写太多代码。我想一定有比这更好的方法。我能找到的唯一方法是使用multimap将所有键组合为一个键,但有时我确实需要逐个查询键。

std::map的
操作符[]
(如容器、集合、multimap等)的工作如下:

  • 如果
    参数不在容器中,则将
    与该
    键一起添加到
    映射
    (如果是
    ,则添加键)并返回
  • 如果
    参数在容器中,则返回
正如@IgorTandetnik建议的那样,如果您想添加(例如:一个计数器作为两级
map
)的信息,那么代码totalmap[1][2]++将起作用

  • totalmap[1]
    map
    中创建一个新元素(键:1,值:
    map{}
    ,默认构造,空)并返回
  • totalmap[1][2]
    内部映射中创建一个新元素(键:2值:0)并返回
  • totalmap[1][2]+
    递增
    内部映射的返回值

  • 您是在谈论编写代码的效率还是运行时效率?
    totalmap[1][2]++看起来相当于您的整个片段。对于点数,是否有理由不喜欢地图而不是地图?谢谢你们!似乎地图可以像地图[1][2]一样直接初始化或查询……我很久以前就尝试过这种方法,但不知何故它不起作用。最后,我可以用一种简单的方式使用它。