查找不存在的密钥时 unordered_map returns 是什么意思

What does unordered_map returns when looking for a key that doesn't exist

我有一个unordered_map<char, mystruct> h

如果 h 不包含密钥 x,这个 return 是什么意思?

mystruct ms = h['x'];

如果指定的键'x'不存在,std::unordered_map::operator[]会先插入一个值初始化的mystruct,然后return插入[=]的引用12=]。之后 ms 从插入的 mystruct.

复制初始化

Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist.

When the default allocator is used, this results in ... the mapped value being value-initialized.

Return value
Reference to the mapped value of the new element if no element with key key existed.

无序映射将尝试使用键 'x' 默认初始化 mystruct 并分配给我的结构。

如果你想避免这种情况,使用 .at(key) 如果它不存在它会抛出一个 out_of_range 异常,你可以捕获它并处理它。

如果你直接使用 h['any key which is not present'] 那么它会给它一些随机值。 你可以做的是,当你不确定它是否存在时,就在 if 中使用它。如果它存在,它将 return 为真,如果不存在则为假。 示例:if(h['a'])cout<