错误C2664:地图中的多图

时间:2015-09-04 12:20:05

标签: c++ c2664

这是我的代码:

map<string, multimap<string, string>> mp;
string str1 = "abc";
string str2 = "def";
string str3 = "ghi";
mp.insert(str1, {str2, str3});

我收到错误C2664:

'void std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::insert(std::initializer_list<std::pair<const _Kty,_Ty>>)' : cannot convert argument 1 from 'std::string' to 'std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const _Kty,_Ty>>>>' c:\users\thomas\documents\visual studio 2013\projects\test\test\main.cpp    14  1   test

似乎我应该使用make_pair,所以我尝试这样:

mp.insert(std::make_pair(str1, std::make_pair(str2, str3)));

但我仍然得到同样的错误 我该怎么办?

2 个答案:

答案 0 :(得分:2)

您正尝试使用std :: pair初始化多图。我认为你的意思是这样的:

multimap<string, string> mm;
mm.insert(std::make_pair(str2, str3));
mp.insert(std::make_pair(str1, mm));

multimap<string, string> mm({{str2, str3}});
mp.insert(std::make_pair(str1, mm));

答案 1 :(得分:1)

functx:distinct-deep($in-xml//ns7:LFULL-REC) 期待std::map::insertstring作为参数 这里multimap<string, string> 您正在传递mp.insert(str1, {str2, str3});string作为参数。

如果你想initializer_list<string>那么,

insert