c++98的push_back对于右值,是先默认构造,再拷贝构造。
C++11 vector 的emplace_back 和 push_back对于右值(匿名值,如函数返回值等,表达式计算值),都是先默认构造函数,再move构造函数。(比拷贝构造开销小,这是相对于C++98的优势)
另外,emplace_back可以直接原地构造,将构造函数的参数直接传入emplace_back,不需要move。

c++98的push_back对于右值,是先默认构造,再拷贝构造。
C++11 vector 的emplace_back 和 push_back对于右值(匿名值,如函数返回值等,表达式计算值),都是先默认构造函数,再move构造函数。(比拷贝构造开销小,这是相对于C++98的优势)
另外,emplace_back可以直接原地构造,将构造函数的参数直接传入emplace_back,不需要move。