查找不存在的键时,unordered_map返回什么
What does unordered_map returns when looking for a key that doesn't exist
我有一个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'];
相关文章:
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- 使用重载 [] 运算符返回 std::map() 的可赋值
- 使用 map<char,strring> 的迭代器返回指针 map<char,strring>*
- 如何在 Visual C++ 中从返回类型为 map 的函数返回 null?
- 返回 std::map with get 方法
- 方法中填充的shared_ptr到map在调用者中返回为空
- C++ std::map 的返回值引用
- 清除 std::map 的 boost::p ool_分配器不会在 VS2017 中返回整个池
- 如何在 c++ 中使用返回类型导出函数 std::map
- 如何将返回的 Python 字典转换为 C++ std::map<string,string>
- boost-python 当C++方法返回 std::map<string,X*>
- 将 map
转换为 void* 并返回并获取密钥 - 拥有 std::map 的最佳方式,我可以在其中定义如果没有键时返回的内容
- 为什么要对 map::find 应用不存在的键将返回一个C++中第一个值映射大小的迭代器
- std::map中的find()函数返回一个值,尽管没有有效的键
- 无法使用 std::map 推断 lambda 的返回类型
- std :: map find()返回错误
- 通过const函数中的参数索引返回std :: map的值
- 插入失败时list/map返回什么?