查找不存在的密钥时 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<
我有一个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<