当密钥不存在时由map给出的值

时间:2017-07-16 14:23:42

标签: c++ stl

假设我有以下功能:

  bool canConstruct(string ransomNote, string magazine) {
    unordered_map<char, int> map(26);
    for (int i = 0; i < magazine.size(); ++i)
        ++map[magazine[i]];
    for (int j = 0; j < ransomNote.size(); ++j)
        if (--map[ransomNote[j]] < 0)
            return false;
    return true;
}

现在假设ransomNote有一个地图中不存在的元素,我通过阅读文档和问题来理解:

What happens if I read a map's value where the key does not exist?

构造具有值' '的新默认密钥。现在,在第二个for循环中引用键时,如何将值初始化为零?

与密钥对应的值的变化如何发生?

是否有相同的文档?

2 个答案:

答案 0 :(得分:3)

  

构造一个新的默认密钥,其值为' '

不,那是错的。 char“默认”值为0,与任何其他整数数字类型一样。

  

是否有相同的文档?

std::map::operator[]的行为详细记录在here

答案 1 :(得分:3)

如果您阅读例如this operator[] reference您将看到它基本上将数据元素创建为T()。这称为value initialization,对于像char这样的整数类型,它意味着它将被初始化为零。