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

时间:2015-03-27 15:56:42

标签: c++ unordered-map

快速提问。如果我试图打电话,确切的行为是什么:

std::unordered_map<int, std::unordered_map<int, double>> myUMap;
myUMap[5].insert(......);

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

我听说尝试使用不存在的密钥来访问unordered_map在无序映射中创建该密钥,但在这种情况下,如果不存在,此插入将正确运行以插入myUMap [5] ,或者如果是,更新myUMap [5]的地图?

1 个答案:

答案 0 :(得分:4)

该行在内部解析为:

(myUMap.operator[](5)).insert(......);

评估顺序是从左到右。

因此,您首先在operator[](5)上调用myUMap,如果该元素尚未出现在地图中,则会创建一个元素。因此,您最终会插入已创建的元素。