2016-02-13 63 views
0

我試圖插入一對值成map其被聲明爲否匹配部件功能:呼叫到std :: unordered_map ::刀片()

unordered_map <unsigned int, std::string> map; 

和當我插入的2個string S上的組合以和unsigned intmap

map.insert(std::make_pair(count,str1.append(str2))); 

和Xcode中說有「呼叫到‘插入’無匹配的成員函數」。我看着overload list,我不確定在這種情況下我應該使用哪一個。有人可以告訴我嗎?


更新:此問題是由unsuccesful typedef造成的。我現在改map,並將其定義爲unordered_map<usigned int, string>

+2

你沒有說任何關於'objects'以及如何'對象'與'string'有關。 – jogojapan

+0

你有沒有'#include '? – sithereal

+0

@jogojapan對不起。 '對象'是'typedef'ed'std :: string' –

回答

4

你唯一可以插入

std::unordered_map <unsigned int, objects> map; 

std::pair<unsigned int, objects> 

你似乎插入

std::pair<unsigned int, std::string> 

這將除非隱含std::string,否則不起作用y兌換爲objects

如果有一個隱式轉換從std::stringobjects,那麼你可能要考慮的簡單,可能更有效emplace接口:

map.emplace(count, str1.append(str2));