C++使用 [] 运算符进行 std::map 本质类型初始化

发布于 2024-11-28 01:00:24 字数 292 浏览 1 评论 0原文

多好的标题啊,假设我有一个这样的映射:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这个俗人 2024-12-05 01:00:24

该值将是该类型的默认构造函数创建的值,因为新位置是使用 T() 填充的。对于int,这是0。您可以亲自看到这一点:

#include <iostream>

using namespace std;

int main() {
    cout << int() << endl; // prints 0
}

像这样用空括号初始化类型称为值初始化(请参阅下面 ildjarn 的评论)。

The value will be what the default constructor for the type creates, because new spots are filled using T(). For int, this is 0. You can see this for yourself:

#include <iostream>

using namespace std;

int main() {
    cout << int() << endl; // prints 0
}

Initializing a type like with empty parentheses like this is called value initialization (see ildjarn's comment below).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文