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

标签 c++ stl stdmap

多好的标题啊,假设我有一张这样的 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/

相关文章:

c++ - std::seed_seq 背后的算法是否已定义?

c++ - setw() 不影响读取整数字段

c++ - 我需要删除静态 std::map 吗?

c++ - 抢占式多任务处理是否会干扰 C++11 发布-获取语义?

c++ - C++ 64 位中的 va_list

C++ 类型转换 int 到 union

c++ - map 可以用作树吗?

c++ - 编译 STL map 插入时出现问题

C++模板函数在 header 中编译但未在实现中编译

c++ - 访问 multimap 值