在对 unordered_map 使用 [] 运算符时,如果键不存在,如何构造值对象?

How is the value object constructed in case key is not present while using [] operator for an unordered_map?

在unordered_map中,当我们使用[]运算符获取键的值时,如果键不存在,它会执行插入。我想了解它是如何实现的。

std::unordered_map<int, int> x;
x[1] = 10;

在上面的语句中,右值10是如何访问并用于执行插入的?

非常直接。

std::mapstd::unordered_map 的运算符 [] 查找具有给定键的元素。如果元素存在,它 returns 对 second 成员的引用。如果它不存在,它会创建一个新的对,键 (first) 等于给定的键和 value-initialized second,插入这个元素和 returns 引用second.

那么operator=就可以正常工作了