当我使用地图时,值肯定会被初始化为默认值,还是我不应该依赖它?
例如,假设我有以下代码:
map<string, int> myMap;
cout << myMap["Hey"];
Run Code Online (Sandbox Code Playgroud)
这将使用我的编译器输出"0".这是保证的行为吗?这可能不会总是初始化为0吗?
Joh*_*eek 23
标准:
ISO/IEC14882§23.4.4.3
T& operator[](const key_type& x);
- 效果:如果
x地图中没有等效的键,则插入value_type(x, T())到地图中.- 要求:
key_type应该是CopyConstructible,mapped_type应该是DefaultConstructible.- 返回:
mapped_type对应的xin的引用*this.- 复杂性:对数.
因此,不仅可以保证,而且如果之前没有条目,则评估myMap["Hey"]还会将值0 插入到映射中.
它的值构造了新键的值.看看一些文档:
A call to this function is equivalent to:
insert(
make_pair(x,T())
);
Run Code Online (Sandbox Code Playgroud)
这将转化为
insert(make_pair("Key", int()));
Run Code Online (Sandbox Code Playgroud)
所以是的:你的价值一开始就是零.
| 归档时间: |
|
| 查看次数: |
10013 次 |
| 最近记录: |