Можно ли вставить пару со значением типа карты в другую карту?
Попытался найти это, но не могу найти подробный ответ. Скажи, у меня есть карта:
std::map<int, string> categoryMap;
и я хочу создать вторую карту с ключами и значениями, к которым следует обращаться, только когда они связаны с определенным ключом первой карты. Вторая карта также будет похожа:
std::map<int, string> itemMap;
Я пытался сделать какую-то функцию вставки, чтобы попробовать это
categoryMap.insert(std::pair<int, map<int, string>>(itemValue, itemMap));
Полученная ошибка утверждает, что "ни один экземпляр перегруженной функции не соответствует списку аргументов". Есть ли другой способ приблизиться к этому или это просто невозможно?
2 ответа
Да, это возможно, но тип ( параметр шаблона) int, map<int, string>
пары, которую вы пытаетесь вставить, не соответствует типу карты int, string
,
Чтобы иметь возможность выполнить вызов вставки:
categoryMap.insert(std::pair<int, map<int, string>>(itemValue, itemMap));
categoryMap
должен быть определен с тем же типом шаблона, что и элемент, который вы вставляете, то есть:
std::map<int, map<int, string>> categoryMap;
#include <iostream>
#include <string>
#include<map>
using namespace std;
int main()
{
std::map<int, std::map<int, string>> categoryMap;
std::map<int, std::string> itemMap;
itemMap.insert(std::pair<int, std::string>(1, "abc"));
itemMap.insert(std::pair<int, std::string>(2, "xyz"));
categoryMap.insert(std::pair<int, std::map<int, std::string>>(1, itemMap));
}