在unordered_map中,当我们使用[]运算符获取键的值时,如果键不存在,则执行插入。我想了解它是如何实现的。
std::unordered_map<int, int> x;
x[1] = 10;
在上面的陈述中,rvalue 10如何被访问并用于执行插入?
非常直截了当。
[]
和std::map
的运算符std::unordered_map
查找具有给定键的元素。如果元素存在,则返回对其对的second
成员的引用。如果不存在,则创建一个新对,其中一个键(first
)等于给定键和value-initialized second
,插入此元素并返回对second
的引用。
然后operator=
正常工作。