c++ - 添加到 std::map 的元素是否会自动初始化?

标签 c++ dictionary initialization

假设我有一张 map

std::map<int, double> foo;

是我写作中的行为foo[2] += 3.0;定义?也就是说,在我的情况下,是否会自动初始化任何隐式添加的 map 元素(希望为 0.0 )?

如果不是,我是否会引入一大堆未定义的行为?如果是这样,我可以用分配器做一些时髦的事情来强制初始化到0.0吗? ?

最佳答案

是的,它将是 value-initialized (在您的情况下为 0.0 )。根据cppreference :

Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist.

If an insertion is performed, the mapped value is value-initialized (default-constructed for class types, zero-initialized otherwise) and a reference to it is returned.

关于c++ - 添加到 std::map 的元素是否会自动初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247436/

相关文章:

python - 为什么使用 dict.keys?

java - 如何在 Gradle 的构建脚本中将插件作为 Map 应用?

python:添加到字典会出错

c# - 带验证的对象初始化

objective-c - 初始化属性,点符号

c++ - 如何用函数的结果初始化静态成员数组?

c++ - 将多个带有 vector 的 map 合并为一张 map

c++ - 最令人烦恼的解析困惑

c++ - 扩展类 c++ 的循环包含问题

c++ - 是否可以打印宽度为5的 vector 内容?