C++使用 [] 运算符进行 std::map 本质类型初始化
多好的标题啊,假设我有一个这样的映射:
std::map<int, int> m;
如果我写下以下内容,
cout<<m[4];
- 结果会是什么(0,未初始化,特定于编译器)?
- 这同样适用于指针(即 std::map)吗?
编辑:
澄清一下,在这个问题中我正在寻求标准行为。
提前致谢, 水泥
What a title, suppose I have a map like this:
std::map<int, int> m;
and if I write the following
cout<<m[4];
- What will be the result (0, uninitialized, compiler specific)?
- Does the same applies for pointers (i.e. std::map)?
EDIT:
To clarify, in this question I am seeking for standard behavior.
Thanks in advance,
Cem
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该值将是该类型的默认构造函数创建的值,因为新位置是使用
T()
填充的。对于int
,这是0
。您可以亲自看到这一点:像这样用空括号初始化类型称为值初始化(请参阅下面 ildjarn 的评论)。
The value will be what the default constructor for the type creates, because new spots are filled using
T()
. Forint
, this is0
. You can see this for yourself:Initializing a type like with empty parentheses like this is called value initialization (see ildjarn's comment below).