2016-02-13 65 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));