无法在地图地图的stl地图中插入数据

时间:2016-10-12 06:59:20

标签: c++ dictionary std stdmap c++-standard-library

我有以下地图声明:

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" } } });

但它不起作用,插入数据的正确语法是什么?

2 个答案:

答案 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;的那个)。

虽然阅读和写作有点棘手。

请注意,双括号 {{或}} 一起使用。 内部 {} 标记地图中的单一条目外部 {} 代表地图整体

为简单起见,还有其他答案。