[英]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
类型要求
- T (the container's element type) must meet the requirements of MoveAssignable , MoveInsertable and EmplaceConstructible .
T(容器的元素类型)必须满足MoveAssignable , MoveInsertable和EmplaceConstructible的要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.