首页 > 解决方案 > 将 unordered_map 的新实例插入 unordered_map

问题描述

我有这些结构:

typedef std::unordered_set<std::string> functionSet;

typedef std::unordered_map<std::string, functionSet> classMap;

typedef std::unordered_map<std::string, classMap> semanticMap;

我有一个带有类名的映射,它包含带有函数名称的映射,它包含带有变量的集合,我在我的代码中使用它进行语义分析。当有一种情况时,当定义了新的“类”时,我正在调用将新类添加到 semnaticMap 的函数,因此这意味着它必须将键值对添加到语义映射、类的名称和类映射的新实例,但是我不知道该怎么做。

我有一个可变语义映射图。所以我试过map.insert("name", new classMap), std::make_pair()了,等等,但一切都告诉我错误

No matching member function for call to 'insert'.

我想添加到 unordered_map "key" => new_unordered_map。

标签: c++unordered-map

解决方案


您的地图包含classMap类型作为值,而不是classMap*(这是 expression 的结果new classMap)。以下代码将为您工作:

map.insert({"name", classMap()});

推荐阅读