欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++ emplace_back()与push_back()

程序员文章站 2022-03-21 17:39:02
...

C++ 11 标准新增加的操作函数,在使用效果上与push_back大致一样,只不过底层实现不同。

emplace操作

emplace操作大致包含三个成员:emplace_front、emplace 和 emplace_back。分别对应与之前的push_front、insert 和push_back。顾名思义,分别是将数据插入容器的头部,指定位置和尾部。

在使用上新加上的三种操作与之前三种无差异。

主要区别

主要区别是在底层函数的实现上。

push_back 会在使用的时候调用构造函数和转移构造函数。

首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。

emplace_back会在插入数据的时候后直接构造数据。很底层的知识这里不提,总而言之是相比push,emplace底层实现更简洁,效率高。

使用

# push_back
v.push_back(make_pair(c, make_pair(x, y)));
# emplace_back
v.emplace_back(make_pair(c, make_pair(x, y)));