在 c++ unordered_map 中调用不存在的键上的方法

Aba*_*ett 0 c++ unordered-map

快问。如果我尝试致电,确切的行为是什么:

std::unordered_map<int, std::unordered_map<int, double>> myUMap;
myUMap[5].insert(......);
Run Code Online (Sandbox Code Playgroud)

其中 ...... 是一对,并假设 myUMap[5] 还不存在?

我听说尝试使用不存在的键访问 unordered_map 会以这种方式在无序映射中创建该键,但在这种情况下,如果 myUMap[5] 不存在,或者如果确实如此,更新 myUMap[5] 中的地图?

vso*_*tco 5

该行在内部解析为:

(myUMap.operator[](5)).insert(......);
Run Code Online (Sandbox Code Playgroud)

其中评估顺序是从左到右。

因此,您首先调用operator[](5)on myUMap,如果地图中尚不存在该元素,它会创建一个元素。因此,您最终会插入到已创建的元素中。