没有初始化任何地图时,将值插入地图中

时间:2018-11-04 08:54:02

标签: c++ dictionary

我看过执行以下行为的代码:

std::map<std::string, std::map<std::string, std::string>> obj;

obj["123"]["456"] = "789";

这有什么意义?不需要首先初始化第一个映射(obj [“ 123”])吗?例如:

std::map<std::string, std::map<std::string, std::string>> obj;
obj["123"] = std::map<std::string,std::string>();
obj["123"]["456"] = "789";

非常感谢!

1 个答案:

答案 0 :(得分:2)

使用[]“索引”地图时,如果找不到该键,则将创建一个条目并将其插入该键的地图中。

因此,您的示例:

obj["123"]["456"] = "789";

基本上等于

// Create an element for the key "123", and store a std::map<std::string, std::string> object for that key
obj.insert(std::pair<std::string, std::map<std::string, std::string>>("123", std::map<std::string, std::string>()));

// Create an element for the key "456" in the map obj["123"]
obj["123"].insert(std::pair<std::string, std::string>("456", "789"));