Phạ*_*ông 3 c++ stl vector c++11 emplace
我有这个代码:
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
Run Code Online (Sandbox Code Playgroud)
你能解释一下为什么吗?
除了std::vector::emplace_back之外,std::vector::emplace要求元素类型满足MoveAssignable的要求,但std::pair<const std::string, int>
作为const std::string
其第一个元素则不满足这一要求。
类型要求