C++11 emplace
这是C++11新增的一个函数,其实和insert的利用有相似的地方,下面我们来做具体的解释
1.emplace
可以利用迭代器来自己控制要插入的位置
struct A{
explicit A(int a, int b) //这里被explicit,故不能发生隐式类型转换
:_a(a)
, _b(b)
{}
private:
int _a;
int _b;
};
vector<A>v; //空vector
A a1(1, 2); //对A进行传值
v.push_back(a1); //插入第一个自定义类型将对应的值插入
//v.push_back(2); //运用explicit不能发生隐式转化,会报错
//v.insert(v.begin(), A(5, 6)); 同下
v.emplace(v.begin(), 5, 6); //在开始的位置插入值为56的一个数组
2.emplace_back
直接在数据的尾部插入数据
struct A{
explicit A(int a, int b)
:_a(a)
, _b(b)
{}
private:
int _a;
int _b;
};
vector<A>v; //空vector
A a1(1, 2); //对A进行传值
v.push_back(a1); //插入第一个自定义类型将对应的值插入
//v.push_back(2); //运用explicit不能发生隐式转化
//我们只需要传入构造函数对应的参数,接口内会自动创建对象
v.emplace_back(2, 3); //在最后插入一个,对应的值的数组
v.emplace_back(a1); //将a1中的值进行插入,在尾部
这就是对于empplace的具体理解,我已经解释的很详细了,大家多理解代码就行了.