push_back()和emplace_back()的区别


在C++中,向vector后面添加元素有两个方法,一个是push_back(),另一个就是emplace_back(),那么同样的功能为什么有两个方法呢?

我们来测试一下:

class Int{
public:
    Int(int x) : x(x) {
        cout << "构造函数"< values1;
    vector values2;
    cout << "push_back: "<

输出:

push_back: 
第一次
构造函数
移动构造函数
第二次
构造函数
移动构造函数
拷贝构造函数
emplace_back:
第一次
构造函数
第二次
构造函数
拷贝构造函数

可知,emplace_back()效率要比push_back()高,所以我们平时尽量用前者,但emplace_back()是C++11才用的,所以在一些要兼顾旧版本代码中,应使用后者