创建多图<string, vector<string> >

create multimap<string, vector<string> >

我得到了一个向量<向量>,我必须将它们放入

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: In function ‘void hashThem()’: dm1.cpp:124:26: error: the value of ‘first’ is not usable in a constant expression
subsetsMap.insert(pair); ^ dm1.cpp:118:10: note: ‘first’ was not declared ‘constexpr’ string first; ^ dm1.cpp:124:32: error: the value of ‘temp’ is not usable in a constant expression subsetsMap.insert(pair); ^ dm1.cpp:117:17: note: ‘temp’ was not declared ‘constexpr’ vector temp; ^ dm1.cpp:124:36: error: type/value mismatch at argument 1 in template parameter list for ‘template struct std::pair’ subsetsMap.insert(pair); ^ dm1.cpp:124:36: error: expected a type, got ‘first’ dm1.cpp:124:36: error: type/value mismatch at argument 2 in template parameter list for ‘template struct std::pair’ dm1.cpp:124:36: error: expected a type, got ‘temp’

我做错了什么,但由于我对 c++ 了解不多,也找不到任何相关的 google 结果,因此不胜感激。 TIA

subsetsMap.insert(pair<first,temp>); 应该是:

subsetsMap.insert(make_pair(first,temp));

std::make_pair用于制作pair.

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