快速提问。如果我试图打电话,确切的行为是什么:
std::unordered_map<int, std::unordered_map<int, double>> myUMap;
myUMap[5].insert(......);
其中......是一对,假设myUMap [5]还不存在?
我听说尝试使用不存在的密钥来访问unordered_map在无序映射中创建该密钥,但在这种情况下,如果不存在,此插入将正确运行以插入myUMap [5] ,或者如果是,更新myUMap [5]的地图?
答案 0 :(得分:4)
该行在内部解析为:
(myUMap.operator[](5)).insert(......);
评估顺序是从左到右。
因此,您首先在operator[](5)
上调用myUMap
,如果该元素尚未出现在地图中,则会创建一个元素。因此,您最终会插入已创建的元素。