我得到了一个矢量<矢量>我必须把它们放进去
std::multimap< string, vector<string> > subsetsMap;
将每个元组的第一个字符串作为键,将矢量作为值。 这是我的功能:
void hashThem()
{
int i,j;
vector<string> temp;
string first;
for(i=0;i<subset_list.size();i++)
{
for(j=0;j<subset_list[i].size();j++)
temp.push_back(subset_list[i][j]);
first = temp[0];
subsetsMap.insert(pair<first,temp>);
temp.clear();
}
}
subset_list和subsetsMap全局声明。 subset_list的声明是:
vector< vector<string> > subset_list;
有以下数据:
柑橘类水果,人造黄油,
咖啡,热带水果,
全脂牛奶,热带水果,
奶油芝士,肉酱,
炼乳,长寿烘焙产品,
研磨清洁剂,黄油等
但是在编译时我会遇到如下错误:
dm1.cpp:在函数'void hashThem()'中:dm1.cpp:124:26:错误: 'first'的值在常量表达式中不可用 subsetsMap.insert(对); ^ dm1.cpp:118:10:注意:'first'没有先声明'constexpr'字符串; ^ dm1.cpp:124:32:错误:'temp'的值在常量表达式subsetsMap.insert(pair)中不可用; ^ dm1.cpp:117:17:注意:'temp'未被声明为'constexpr'矢量temp; ^ dm1.cpp:124:36:错误:模板参数列表中参数1的类型/值不匹配'template struct std :: pair'subsetsMap.insert(pair); ^ dm1.cpp:124:36:错误:期望一个类型,得到'第一个'dm1.cpp:124:36:错误:类型/值 'template struct std :: pair'dm1.cpp的模板参数列表中参数2的不匹配:124:36:错误:期望一个类型,得到'temp'
我正在做错事,但由于我不太了解c ++,并且找不到任何相关的谷歌搜索结果,所以我们非常感谢任何帮助。 TIA
答案 0 :(得分:3)
subsetsMap.insert(pair<first,temp>);
错了。
应该是:
subsetsMap.insert(std::make_pair(first,temp));
或者:
subsetsMap.insert(std::pair<const std::string, std::vector<std::string>>(first,temp));
注意密钥的const
。
更好:
subsetsMap.emplace(first,temp); // Forwarding the arguments directly to the constructor
答案 1 :(得分:1)
subsetsMap.insert(pair<first,temp>);
应该是:
subsetsMap.insert(make_pair(first,temp));
std::make_pair用于制作pair
。