查找不存在的键时,unordered_map返回什么

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

本文关键字:map 返回 什么 unordered 不存在 查找      更新时间:2023-10-16

我有一个unordered_map<char, mystruct> h.

如果h不包含密钥x,这将返回什么?

mystruct ms = h['x'];

如果指定的键'x'不存在,std::unordered_map::operator[]将首先插入一个值初始化的mystruct,然后将引用返回到插入的mystruct。之后,从插入的mystruct复制初始化ms

返回对映射到等效键的值的引用,如果此类键尚不存在,则执行插入。

使用默认分配器时,这会导致...正在值初始化的映射值。

返回 value
引用新元素的映射值(如果不存在具有键键的元素(。

无序列图将尝试默认使用键'x'初始化mystruct并分配给mystruct

如果您希望避免这种情况,请使用.at(key).如果它不存在,它将抛出一个out_of_range异常,您可以捕获并处理该异常。

如果你直接使用h['任何不存在的键'],那么它会给它一些随机值。 您可以做的是,当您不确定它是否存在时,只需在 if 中使用它。如果它存在,它将返回 true,如果不是,则返回 false。 示例:if(h['a'](cout<<h['a'];