关于emplace_back()和push_back()的比较

今天参考别人的代码,发现别人在使用emplace_back()而不是push_back(),我就去查了一下,发现原因是这样的:

emplace_back能就地通过参数构造对象,不需要拷贝或者移动内存,相比push_back能更好地避免内存的拷贝与移动,使容器插入元素的性能得到进一步提升。

那我们动手比较一下:

先看push_back()

#include
using namespace std;
int main()
{
    clock_t start,finish;
    int times=20,cnt=10000000;
    int sum=0;
    for(int i=0;i vec;
        for(int i=0;i

运行结果:

关于emplace_back()和push_back()的比较_第1张图片

再看emplace_back()

#include
using namespace std;
int main()
{
    clock_t start,finish;
    int times=20,cnt=10000000;
    int sum=0;
    for(int i=0;i vec;
        for(int i=0;i

 运行结果:

关于emplace_back()和push_back()的比较_第2张图片

结论:我粗略算了一下,empalce_back()性能大概提升了20% 

你可能感兴趣的:(C/C++)