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

7gs2gvoe  于 2022-11-19  发布在  其他
关注(0)|答案(3)|浏览(865)

我有一个unordered_map<char, mystruct> h
如果h不包含密钥x,该函数返回什么?

mystruct ms = h['x'];
bf1o4zei

bf1o4zei1#

如果指定的键'x'不存在,std::unordered_map::operator[]将首先插入一个值初始化的mystruct,然后返回对插入的mystruct的引用,再从插入的mystruct复制初始化ms
传回值的指涉,该值Map至与key相等的索引键,如果这样的索引键不存在,则执行插入。
当使用默认分配器时,这将导致...Map值为value-initialized

返回值

对新元素的Map值的引用(如果不存在具有键key的元素)。

egdjgwm8

egdjgwm82#

无序Map将尝试使用密钥'x'默认初始化mystruct,并将其赋值给mystruct
如果你想避免这种情况,使用.at(key)。如果它不存在,它将抛出一个out_of_range异常,你可以捕获并处理它。

w8f9ii69

w8f9ii693#

如果你直接使用h [′ any key which is not present ′],那么它会给予它一个随机值。你可以做是,当你不确定它是否存在时,就在if中使用它。如果它存在,它会返回true,如果不存在,则返回false。例如:如果(h [“a”])cout〈〈h [“a”];

相关问题