调用std :: unordered_map :: insert()没有匹配的成员函数

时间:2016-02-13 04:16:34

标签: c++ xcode stl unordered-map

我尝试将一对值插入map,声明为:

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

当我将2 stringunsigned int的组合插入map时:

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

和Xcode说“没有匹配的成员函数来调用'insert'”。我查看了overload list,我不确定在这种情况下我应该使用哪一个。有人可以告诉我吗?

更新:此问题是由不成功的typedef引起的。我现在更改了map并将其定义为unordered_map<usigned int, string>

1 个答案:

答案 0 :(得分:4)

唯一可以插入

的内容
std::unordered_map <unsigned int, objects> map;

std::pair<unsigned int, objects>

您似乎正在插入

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

除非std::string可隐式转换为objects,否则无效。

如果存在从std::stringobjects的隐式转换,那么您可能需要考虑更简单且可能更高效的emplace接口:

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