怎样理解在C++11新出来的emplace函数 ? ?(干货 ! ! !)

在这里插入图片描述

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的具体理解,我已经解释的很详细了,大家多理解代码就行了.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值