首页 > 编程知识 正文

vector的emplace,vector的pushback

时间:2023-05-04 02:18:14 阅读:180036 作者:3364

在编写代码时,CLion警告您用emplace_back方法替换push_back方法。

emplace_back函数的作用是减少对象的复制和创建次数,是C 11的一个新功能,主要适用于临时对象的赋值。

如果使用push_back函数向容器添加新元素,则需要该对象的实例,但可以不使用emplace_back。 这可以通过直接传递对象的构造函数参数直接构建,从而减少一次复制和赋值操作。

例如,以下学生班:

class stu _ info { private : string name; public : stu _ info (conststringname ) { this-name=name; cout ' stu _ info (: ' this-nameendl; } } ~stu_info () cout )~stu_info ) :'this-nameendl; }stu_info(conststu_infos ) { this-name=s.name; cout ' copy constructor 3360 ' this-nameendl; }; 如何使用push_back插入元素:

vectorstu_info v; v.push_back(stu_info('nginx ' ) ); 在push_back之前,必须使用stu_info实例传递临时对象。 必须先执行实例对象的构造函数,然后将其复制到容器中并再次执行复制构造函数。

另一方面,emplace_back可以不执行额外的复制构造函数。 这是一个直接在容器中执行对象的构造函数。

vectorstu_info v; v.EMplace_back(redis ); 两个函数的执行结果:

我确实还不知道这个函数。 如果编译器没有提醒我,我以后可能也不知道。 IDE在某种意义上是高眼界

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。