C++中顺序容器一般都含有push_back
,insert
,push_front
操作,这些操作的参数必然会包含容器相对应类型的对象或者迭代器。于是在某个版本后提供了与之相对性的emplace_back
,emplace
,emplace_front
,不同是这几个方法的参数是容器对应类型的构造函数参数,当调用这个方法时,参数会被调到对应的类型的构造函数中,构造出对象不加入容器中,直接看代码可能直观点。
#include<iostream>
#include<vector>
#include<array>
using namespace std;
struct node
{
int a,b;
node(int a,int b):a(a),b(b){}
};
int main()
{
vector<node>v;
v.emplace_back(2,3); //将2,3作为构造函数的参数构造出对象并加入v
v.push_back(node(2,3)); //等价
}