例如,计算书中单词的出现次数,我看到有人写道:
map<string, int> count;
string s;
while (cin >> s) count[s]++;
这是正确的方法吗?我在我的机器上测试过,看起来如此。但保证初始化为零吗?如果不是,我会想象这样的代码:
map<string, int> count;
string s;
while (cin >> s)
if (count.find(s) != count.end()) count[s]++;
else count[s] = 1;
答案 0 :(得分:12)
是的,operator[]
上的std::map
会使用T()
初始化值,在int
的情况下,该值为零。
这在C ++标准的第23.4.4.3节中有记载:
T& operator[](const key_type& x);
效果:如果地图中没有等效于
x
的键,则插入value_type(x, T())
进入地图。