我有这些构造:
typedef std::unordered_set<std::string> functionSet;
typedef std::unordered_map<std::string, functionSet> classMap;
typedef std::unordered_map<std::string, classMap> semanticMap;
我有一个带有类名的映射,它包含带有函数名的映射,并且包含带有变量的set,我将其用于代码中的语义分析。 在某种情况下,当定义了新的“类”时,我正在调用将新类添加到semnaticMap的函数,因此这意味着它必须将键值对添加到语义映射,类名称和类映射的新实例,但是我不知道该怎么做。
我有一个可变的语义映射图。所以我尝试了map.insert("name", new classMap), std::make_pair()
等,但是一切都向我显示了错误
No matching member function for call to 'insert'.
我想添加到unordered_map“ key” => new_unordered_map。
答案 0 :(得分:1)
您的地图包含classMap
类型作为值,而不是classMap*
(这是表达式new classMap
的结果)。以下代码将为您工作:
map.insert({"name", classMap()});