当映射“m”没有键“k”时,“m[k] += x”如何工作?

问题描述 投票:0回答:1

我有一个代码,其中

m[k] += x
,其中
m
std::map
,即使
m[k]
为空(这将
m[k]
设置为
x
),这也可以工作。它是如何工作的?我想要超载
+=
,我想知道我是否必须在
+=
的身体里处理这样的情况。在我当前的代码中,
m
的值类型是
double

c++ dictionary
1个回答
2
投票

事实上,正如评论中提到的,只要没有该键的条目,

operator\[\]
的索引
std::map
就会创建一个新的映射条目。

这里的技巧是索引运算符返回一个左值,因此您可以像任何其他变量一样使用它并更改它。因此,除了确保 += 的行为像 += 应该做的那样之外,您无需对 += 重载做任何特别的事情。

© www.soinside.com 2019 - 2024. All rights reserved.