我对c ++比较陌生,而且我遇到了一段代码,我无法理解它。我有以下未初始化的地图
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
?
答案 0 :(得分:2)
使用C ++ $foo = strtolower(trim($_REQUEST['foo'] ?? ''));
类型,如果使用选择运算符(std::map
)查找不存在的键,则地图将自动为您插入新的键/值对。与键关联的值将是与值类型关联的默认值。对于operator []
s,那是0,所以如果你查找不存在的东西,你可以依赖int
放入值0。
例如,如果你写
std::map
且++fq[sum];
不是sum
中的关键字,会发生以下情况:
fq
作为键插入地图中,其值为0。净效果是sum
最终为1.这是可移植行为,您可以依赖它在不同系统中以这种方式工作。