我有以下地图声明:
std::map<std::string, std::map<std::string, std::map<std::string, std::string>>> m;
我尝试按以下方式插入数据:
m.insert({ "HARDWARE\\DESCRIPTION\\System\\BIOS", { "REG_SZ", { "SystemSKU", "SystemSKU" } } });
但它不起作用,插入数据的正确语法是什么?
答案 0 :(得分:4)
如果您无法使用初始化列表,则可以使用经典方法:
m["HARDWARE\\DESCRIPTION\\System\\BIOS"]["REG_SZ"]["SystemSKU"] = "SystemSKU";
希望这有帮助。
答案 1 :(得分:0)
This列表初始化对您有用:
std::map<std::string, std::map<std::string, std::map<std::string, std::string>>> m{{"HARDWARE\\DESCRIPTION\\System\\BIOS",
{{ "REG_SZ", {{ "SystemSKU", "SystemSKU" }} }}
}};
或者,使用insert
m.insert({"HARDWARE\\DESCRIPTION\\System\\BIOS",
{{ "REG_SZ", {{ "SystemSKU", "SystemSKU" }} }} //create inner maps using double braces
});
它使用std :: map的列表构造函数(采用std :: initializer_list&gt;的那个)。
虽然阅读和写作有点棘手。
请注意,双括号 {{或}} 一起使用。 内部 {} 标记地图中的单一条目,外部 {} 代表地图整体。
为简单起见,还有其他答案。