我想知道这是否是调用[]而没有赋值的标准会将此键值对的值初始化为0,如果value是int类型的话?
// the way I did before, can I skip the if() checking?
std::unordered_map<std::string, size_t> word_map;
for (const auto &w : { "this", "sentence", "is", "not", "a", "sentence",
"this", "sentence", "is", "a", "hoax"}) {
if (!word_map.count(w)) {
word_map[w] = 0;
} else {
++word_map[w];
}
}
我可以改为:
std::unordered_map<std::string, size_t> word_map;
for (const auto &w : { "this", "sentence", "is", "not", "a", "sentence",
"this", "sentence", "is", "a", "hoax"}) {
++word_map[w];
}
感谢。
/*-------------
---------------
-------------*/
更新
我刚刚查看了这个关于en.cppreference.com/w/cpp/language/default_initialization的页面,看来如果我们回复默认的初始化int x; x的值将是不确定的。所以我猜第一次调用时,word_map [w]不一定== 0