gpt4 book ai didi

c++ - 使用 `[]` 访问 map

转载 作者:行者123 更新时间:2023-11-28 01:41:33 25 4
gpt4 key购买 nike

我是 c++ 的新手,我遇到了一段代码,但我不太理解它。我有以下未初始化的 map

map<int,int> fq

和以下 int 变量:

int ans=0
int sum=-1

下面的代码是我遇到的问题:

++fq[sum]
sum*=2
ans+=fq[-sum]

键是否以某种方式默认分配?我的猜测是

++fq[sum] sets key:1 to -1 and key:2 to -2 and so on...

但我不知道 ans+=fq[-sum] 是如何工作的。它是否添加 key 并将其添加到 ans

最佳答案

对于 C++ std::map 类型,如果您使用选择运算符 (operator []) 查找不存在的键,映射将自动插入一个新的键/值对。与键关联的值将是与值类型关联的默认值。对于 int,它是 0,因此如果您查找不存在的内容,您可以依靠 std::map 放入值 0。

例如,如果你写

++fq[sum];

sum不是fq中的key,会发生以下情况:

  • map 会将 sum 作为键插入到值为 0 的 map 中。
  • map 然后返回对新创建的 0 值的引用。
  • 该值会增加。

最终结果是 fq[sum] 最终为 1。这是可移植的行为,您可以依赖它在不同系统中以这种方式工作。

关于c++ - 使用 `[]` 访问 map<int,int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46922345/

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