是否可以将具有地图类型值的对插入另一个地图?

时间:2018-04-19 10:14:08

标签: c++ stdmap

试着看了这个,但似乎找不到详细的答案。说我有一张地图:

std::map<int, string> categoryMap;

我想创建第二个带有键和值的映射,只有在与第一个映射的特定键相关联时才能访问它们。第二张地图也类似:

std::map<int, string> itemMap;

我尝试过某种插入功能来试试这个

categoryMap.insert(std::pair<int, map<int, string>>(itemValue, itemMap));

我收到的错误声称“没有重载函数的实例与参数列表匹配。”有没有其他方法来解决这个问题,或者这是不可能的?

2 个答案:

答案 0 :(得分:3)

是的,这是可能的,但您尝试插入的对的类型(template parameterint, map<int, string>与地图类型int, string不匹配。

能够运行插入调用:

categoryMap.insert(std::pair<int, map<int, string>>(itemValue, itemMap));
必须使用与要插入的项目相同的模板类型定义

categoryMap,即:

std::map<int, map<int, string>> categoryMap;

See it online.

答案 1 :(得分:3)

#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));
}