多好的标题啊,假设我有一张这样的 map :
std::map<int, int> m;
如果我写下以下内容
cout<<m[4];
- 结果是什么(0、未初始化、编译器特定)?
- 这同样适用于指针(即 std::map)吗?
编辑:
澄清一下,在这个问题中我正在寻求标准行为。
提前致谢, 水泥
最佳答案
该值将是该类型的默认构造函数创建的值,因为新位置是使用 T()
填充的。对于int
,这是0
。您可以亲自看看:
#include <iostream>
using namespace std;
int main() {
cout << int() << endl; // prints 0
}
像这样用空括号初始化类型称为值初始化(请参阅下面 ildjarn 的评论)。
关于C++ std::map 使用 [] 运算符初始化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949986/