没有匹配的成员函数来调用 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 int
到 map
的组合时:
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::string
到 objects
的隐式转换,那么您可能需要考虑更简单且可能更高效的 emplace
接口:
map.emplace(count, str1.append(str2));
我试图将一对值插入到 map
中,声明为:
unordered_map <unsigned int, std::string> map;
当我将 2 string
的组合插入到 unsigned int
到 map
的组合时:
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::string
到 objects
的隐式转换,那么您可能需要考虑更简单且可能更高效的 emplace
接口:
map.emplace(count, str1.append(str2));