【问题标题】:std::vector emplace and std::vector emplace back with pairstd::vector emplace 和 std::vector emplace 与 pair
【发布时间】:2017-07-12 05:57:10
【问题描述】:

我有这个代码:

std::vector<std::pair<const std::string, int>> vec;

vec.emplace_back("a", 1); //success
vec.emplace(vec.end(), "b", 2); //compile error

vec.emplace_back(std::make_pair<const std::string, int>("c", 3));  //success
vec.emplace(vec.end(),
     std::make_pair<const std::string, int>("d", 4)); //compile error

你能解释一下为什么吗?

【问题讨论】:

  • 如果您告诉我们您遇到的什么错误,将会有所帮助。请read about how to ask good questions,然后编辑您的问题以包含完整、完整和未经编辑的构建输出。

标签: c++ c++11 vector stl emplace


【解决方案1】:

除了std::vector::emplace_backstd::vector::emplace 要求元素类型满足MoveAssignable 的要求,但std::pair&lt;const std::string, int&gt;const std::string 作为其第一个元素则不满足。

类型要求

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多