【问题标题】:No matching member function for call to std::unordered_map::insert()没有匹配的成员函数调用 std::unordered_map::insert()
【发布时间】:2016-02-13 04:16:34
【问题描述】:

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

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

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

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

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


更新:这个问题是由不成功的 typedef 引起的。我现在改了map,定义为unordered_map&lt;usigned int, string&gt;

【问题讨论】:

  • 你没有说objects 以及objectsstring 的关系。
  • #include &lt;unordered_map&gt;了吗?
  • @jogojapan 哦,对不起。 objectstypedefed 为 std::string
  • @sithereal 是的,我是 using std::unordered_map

标签: c++ xcode stl unordered-map


【解决方案1】:

唯一可以插入的东西

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多