我有一个代码,其中
m[k] += x
,其中m
是std::map
,即使m[k]
为空(这将m[k]
设置为x
),这也可以工作。它是如何工作的?我想要超载+=
,我想知道我是否必须在+=
的身体里处理这样的情况。在我当前的代码中,m
的值类型是double
。
operator\[\]
的索引std::map
就会创建一个新的映射条目。
这里的技巧是索引运算符返回一个左值,因此您可以像任何其他变量一样使用它并更改它。因此,除了确保 += 的行为像 += 应该做的那样之外,您无需对 += 重载做任何特别的事情。