简体   繁体   English

std :: vector置换和std :: vector置换成对

[英]std::vector emplace and std::vector emplace back with pair

I have this code: 我有以下代码:

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

Can you explain me why? 你能解释一下为什么吗?

Other than std::vector::emplace_back , std::vector::emplace requires the element type meet the requirement of MoveAssignable , but std::pair<const std::string, int> has const std::string as its first element then doesn't satisfy that. 除了std :: vector :: emplace_back之外std :: vector :: emplace要求元素类型符合MoveAssignable的要求,但是std::pair<const std::string, int> const std::string元素不满足要求。

Type requirements 类型要求

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM