创建多映射<字符串、矢量<string>>

create multimap<string, vector<string> >

本文关键字:gt lt 矢量 string 字符串 创建 映射      更新时间:2023-10-16

我得到了一个向量<vector>,我必须把它们放在中

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(对)中不可用;^dm1.cpp:117:17:注意:"temp"未声明为"constexpr"vector temp;^dm1.cpp:124:36:错误:"template-struct std::pair"subsetsMap.insert(pair)的模板参数列表中的参数1处类型/值不匹配;^dm1.cpp:124:36:错误:应为类型,得到"first"dm1.cpp:124:36:错误:类型/值"template-struct std::pair"dm1的模板参数列表中的参数2不匹配。cpp:124:36:错误:应为类型,得到的是"temp"

我正在做一些错误的事情,但由于我不太懂c++,也找不到任何相关的谷歌结果,我们非常感谢您的帮助。TIA

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

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

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

std::make_pair用于生成pair