当键不存在时,映射给出的值

Value given by map when key does not exsist

本文关键字:映射 不存在      更新时间:2023-10-16

假设我有以下函数:

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有一个地图中不存在的元素,我通过阅读文档和问题来理解:

如果我在键不存在的情况下读取地图的值,会发生什么情况?

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

与键对应的值变化是如何发生的?

有没有相同的文档?

构造

一个新的默认键,其值为' '

不,这是错误的。char"默认">值是0,就像任何其他整数数字类型一样。


有没有相同的文档?

此处详细记录了std::map::operator[]的行为。

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