对于unordered_map使用[]运算符时,如何在case键中构造值对象?

问题描述 投票:-1回答:1

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

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

在上面的陈述中,rvalue 10如何被访问并用于执行插入?

c++ operators unordered-map
1个回答
2
投票

非常直截了当。

[]std::map的运算符std::unordered_map查找具有给定键的元素。如果元素存在,则返回对其对的second成员的引用。如果不存在,则创建一个新对,其中一个键(first)等于给定键和value-initialized second,插入此元素并返回对second的引用。

然后operator=正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.