我有一个unordered_map<char, mystruct> h。如果h不包含密钥x,该函数返回什么?
unordered_map<char, mystruct> h
h
x
mystruct ms = h['x'];
bf1o4zei1#
如果指定的键'x'不存在,std::unordered_map::operator[]将首先插入一个值初始化的mystruct,然后返回对插入的mystruct的引用,再从插入的mystruct复制初始化ms。传回值的指涉,该值Map至与key相等的索引键,如果这样的索引键不存在,则执行插入。当使用默认分配器时,这将导致...Map值为value-initialized。
'x'
std::unordered_map::operator[]
mystruct
ms
返回值
对新元素的Map值的引用(如果不存在具有键key的元素)。
egdjgwm82#
无序Map将尝试使用密钥'x'默认初始化mystruct,并将其赋值给mystruct。如果你想避免这种情况,使用.at(key)。如果它不存在,它将抛出一个out_of_range异常,你可以捕获并处理它。
.at(key)
out_of_range
w8f9ii693#
如果你直接使用h [′ any key which is not present ′],那么它会给予它一个随机值。你可以做是,当你不确定它是否存在时,就在if中使用它。如果它存在,它会返回true,如果不存在,则返回false。例如:如果(h [“a”])cout〈〈h [“a”];
3条答案
按热度按时间bf1o4zei1#
如果指定的键
'x'
不存在,std::unordered_map::operator[]
将首先插入一个值初始化的mystruct
,然后返回对插入的mystruct
的引用,再从插入的mystruct
复制初始化ms
。传回值的指涉,该值Map至与key相等的索引键,如果这样的索引键不存在,则执行插入。
当使用默认分配器时,这将导致...Map值为value-initialized。
返回值
对新元素的Map值的引用(如果不存在具有键key的元素)。
egdjgwm82#
无序Map将尝试使用密钥
'x'
默认初始化mystruct
,并将其赋值给mystruct
。如果你想避免这种情况,使用
.at(key)
。如果它不存在,它将抛出一个out_of_range
异常,你可以捕获并处理它。w8f9ii693#
如果你直接使用h [′ any key which is not present ′],那么它会给予它一个随机值。你可以做是,当你不确定它是否存在时,就在if中使用它。如果它存在,它会返回true,如果不存在,则返回false。例如:如果(h [“a”])cout〈〈h [“a”];