创建多图<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
我得到了一个向量<向量>,我必须将它们放入
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