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才用的,所以在一些要兼顾旧版本代码中,应使用后者