Вставить новый экземпляр unordered_map в unordered_map - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть эти конструкции:

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

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

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

У меня есть карта с именами классов, она содержит карту с именами функций и содержит набор с переменными, я использую ее для семантического анализа в моем коде. Когда возникает ситуация, когда определяется новый «класс», я вызываю функцию, которая добавляет новый класс в semnaticMap, так что это означает, что он должен добавить пару ключ-значение в semanticMap, имя класса и новый экземпляр classMap, но Я не знаю, как это сделать.

У меня есть переменная карта semanticMap. Итак, я пробовал map.insert("name", new classMap), std::make_pair() и т. Д., Но все показывает мне ошибку, что

No matching member function for call to 'insert'.

Я хочу добавить в unordered_map "key" => new_unordered_map.

1 Ответ

1 голос
/ 19 апреля 2019

Ваша карта содержит classMap тип в качестве значений, а не classMap* (что является результатом выражения new classMap).Следующий код будет работать для вас:

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