如果我写:
#include <map>
int main()
{
std::map<int, double> q;
q[3] += 4;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我能确定q [3]是4,而不是q [3]是4 +(来自内存的一些随机未初始化的垃圾)?
如果执行插入,则映射值是值初始化的(默认为类类型构造,否则为零初始化),并返回对它的引用.
因此,您可以指望初始化为零的值.
编辑:
上面的引用是指C++ 11之前的情况.C++ 11及更高版本的措辞难以理解,但我认为这是一个有效的句子:
使用默认分配器时,这会导致密钥是从密钥构造的,并且映射的值是值初始化的.
第一个引用中的相同括号注释也适用于此处的"值初始化"一词(请参阅值初始化页面),因此它仍然会初始化基本类型的值.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |