创建multimap <string,vector <string =“”>&gt;

时间:2016-03-23 12:04:01

标签: c++ string multimap

我得到了一个矢量&lt;矢量&gt;我必须把它们放进去

  

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

2 个答案:

答案 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