我看过执行以下行为的代码:
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";
非常感谢!
答案 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"));