首页 > 编程知识 正文

C 11 尽量全部使用emplace以提升效率,提升资源配置使用效率

时间:2023-05-04 01:57:51 阅读:180040 作者:4239

emplace操作是C 11的新功能,新引入的三个成员emlace_frontempaceemplace_back,位于容器头部、指定位置这些操作构造而不是拷贝元素到容器中,是最高效接口,尽量这些操作替换对应的push_front、insert 和push_back

两者的区别

调用insert时,会将元素类型的对象传递给insert,并将元素的对象复制到容器中。 emplace将参数传递给元素类型的构造函数,emplace使用这些参数直接在容器管理的内存空间中构建元素。 所以是最有效率的。

例子

假设d是Date类型的容器。

//使用三个参数的Date构造函数在容器管理的内存空间中生成新元素。

d.emplace_back(「2016 "、" 05 "和" 26 " );

//错误,push_back没有这样的用法

d.push_back(「2016 "、" 05 "和" 26 "

//push_back )创建临时对象并将该临时对象复制到容器中

d.push_back(date(「2016”、“05”和“26”)

通过实例发现,与insert相比,利用C 11的新特性emplace在容器中添加新元素,在容器管理的内存空间中构建新元素,不需要构建临时对象,减少了内存开销。

Note

emplace函数直接在容器中构建元素,传递给emplace函数的参数必须与元素类型的构造函数匹配。

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