gpt4 book ai didi

c++ - 如何在c++中高效地在 map 中创建 map

转载 作者:行者123 更新时间:2023-11-28 06:42:46 24 4
gpt4 key购买 nike

我在c++中一直使用multilevel map,比如map<int,map<int,map<int,int>>> ,但我找不到一种非常有效的方法来更新或创建它。假设我想将一个点 (1,2) 插入到一个用于计算点数的 map 中,我将执行以下操作:

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]++;
}

当我需要创建 3 级或 4 级 map 时,我不得不编写太多代码。我认为一定有比这更好的方法。我能想到的唯一方法是使用 multimap 将所有键合并为一个,但有时我真的需要一个一个地查询键。

最佳答案

operator[]std::map (和容器、集合、多映射等一样)工作如下:

  • 如果key参数不在容器中,value默认构造是添加了 keymap (如果是 set ,则添加 key )并返回。
  • 如果key参数在容器中 value被退回。

正如@IgorTandetnik 所建议的那样,如果您想添加(例如:一个计数器作为二级 map 的信息),代码 totalmap[1][2]++ 将起作用。

  1. totalmap[1]map 中创建一个新元素(键:1,值:map<int, int>{},默认构造,空)并返回。
  2. totalmap[1][2]inner map 中创建一个新元素(键:2 值:0)并返回。
  3. totalmap[1][2]++增加 inner map 的返回值

关于c++ - 如何在c++中高效地在 map 中创建 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com