C ++ unordered_map / map []运算符默认初始化值

时间:2016-12-18 16:49:00

标签: c++ unordered-map

我想知道这是否是调用[]而没有赋值的标准会将此键值对的值初始化为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

0 个答案:

没有答案