例如,计算书中单词的出现次数,我看到有人简单地写道:
map<string, int> count;
string s;
while (cin >> s) count[s]++;
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?我在我的机器上测试过,看起来如此.但保证初始化为零吗?如果不是,我会想象这样的代码:
map<string, int> count;
string s;
while (cin >> s)
if (count.find(s) != count.end()) count[s]++;
else count[s] = 1;
Run Code Online (Sandbox Code Playgroud)
R. *_*des 12
是的,operator[]在std::map遗嘱初始化值T(),在这种情况下int,为零.
这在C++标准的第23.4.4.3节中有记录:
Run Code Online (Sandbox Code Playgroud)T& operator[](const key_type& x);效果:如果
x地图中没有等效的键,则插入value_type(x, T())到地图中.
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |