STL 映射是否自动初始化值
Does STL Map auto-initialize values?
可能的重复项:
为什么在 STL 映射中用作值的类需要 ...?
当我使用地图时,值是否肯定会初始化为默认值,或者我不应该依赖它?
例如,假设我有以下代码:
map<string, int> myMap;
cout << myMap["Hey"];
这将使用我的编译器输出"0"。 这是有保证的行为吗? 这是否可能并不总是初始化为 0?
引用标准:
ISO/IEC 14882 §23.4.4.3
T& operator[](const key_type& x);
- 效果:如果映射中没有与
x
等效的键,则在映射中插入value_type(x, T())
。- 要求:
key_type
应CopyConstructible
,mapped_type
应DefaultConstructible
。- 返回:对
*this
中x
对应的mapped_type
的引用。- 复杂度:对数。
因此,它不仅是有保证的,而且如果之前没有输入值,myMap["Hey"]
还会导致将值 0 插入到映射中。
它的值构造新键的值。 看看一些文档:
A call to this function is equivalent to:
insert(
make_pair(x,T())
);
这将转化为
insert(make_pair("Key", int()));
所以是的:你的值一开始会为零。
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 在未初始化映射的情况下,将值插入到映射的映射中
- 在C++中初始化向量映射的最有效方法
- 初始化之前使用的静态映射
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 由于没有使用赋值运算符,映射的值是如何初始化的?
- 单行初始化映射中的C++对象
- 使用更大的比较器初始化映射
- 初始化映射的值,该映射是结构内的字段
- 在类构造函数中初始化映射时,如何避免内存泄漏
- 如何使用RCPP初始化映射的映射
- 初始化映射时出错
- 为什么初始化映射时不能省略大括号
- 如何在结构数据结构中使用 map stl 并初始化映射,然后引用它
- 使用结构内的自定义类初始化映射
- 用一对std::arrays c++11初始化映射
- c++可以更好地初始化映射映射
- 如何从set初始化映射
- 初始化C++映射时出错
- 在 EIGEN 中单独声明和初始化映射类型矩阵