簡體   English   中英

錯誤C2664:地圖中的多圖

[英]error C2664: multimap in map

這是我的代碼:

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)));

但我仍然得到同樣的錯誤。
我該怎么辦?

您正在嘗試使用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));

std::map::insert期待stringmultimap<string, string>作為參數。
這里是mp.insert(str1, {str2, str3}); 您正在傳遞stringinitializer_list<string>作為參數。

如果你想insert

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM