试着看了这个,但似乎找不到详细的答案。说我有一张地图:
std::map<int, string> categoryMap;
我想创建第二个带有键和值的映射,只有在与第一个映射的特定键相关联时才能访问它们。第二张地图也类似:
std::map<int, string> itemMap;
我尝试过某种插入功能来试试这个
categoryMap.insert(std::pair<int, map<int, string>>(itemValue, itemMap));
我收到的错误声称“没有重载函数的实例与参数列表匹配。”有没有其他方法来解决这个问题,或者这是不可能的?
答案 0 :(得分:3)
是的,这是可能的,但您尝试插入的对的类型(template parameter)int, map<int, string>
与地图类型int, string
不匹配。
能够运行插入调用:
categoryMap.insert(std::pair<int, map<int, string>>(itemValue, itemMap));
必须使用与要插入的项目相同的模板类型定义 categoryMap
,即:
std::map<int, map<int, string>> categoryMap;
答案 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));
}