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

No matching member function for call to std::unordered_map::insert()

我试图将一对值插入到 map 中,声明为:

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

当我将 2 string 的组合插入到 unsigned intmap 的组合时:

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

和 Xcode 说有 "no matching member function for call to 'insert'"。我查看了 overload list,但我不确定在这种情况下应该使用哪一个。有人可以告诉我吗?


更新:这个问题是由于typedef不成功引起的。我现在把map改成了unordered_map<usigned int, string>

你唯一可以插入的东西

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