Можно ли вставить пару со значением типа карты в другую карту?

Попытался найти это, но не могу найти подробный ответ. Скажи, у меня есть карта:

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));
}
Другие вопросы по тегам