博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vector学习之insert和emplace操作
阅读量:2193 次
发布时间:2019-05-02

本文共 1619 字,大约阅读时间需要 5 分钟。

我们知道向vector容器里插入数据时使用insert函数,但是C++11又增加了一个emplace函数,它的功能与emplace_back原理一样,是构造一个对象添加到容器中,这样就省去了拷贝的副本,提高了性能,操作对比如下:

#include 
#include
#include
using namespace std;typedef struct Personal{ int m_age; int m_height; string m_name; Personal(int age, int height, std::string name) :m_age(age), m_height(height), m_name(name) { //cout << "constructed=======Personal===age=" << age << endl; } Personal(const Personal& other) :m_age(other.m_age) , m_height(other.m_height) , m_name(other.m_name) { //cout << "copy constructed====Personal==age=" << m_age << endl; } ~Personal() { //cout << "destructor~~~Personal=========age~" << m_age << endl; }}Person;void insert_emplace_reserve_Test(){ int count = 214748;//214748 string name = string("床前明月光,疑似地上霜,举头望明月,低头思故乡。"); double startTime1 = clock();//1计算开始 vector
vec1; cout << "insert_emplace_reserve_Test==========" <
vec3; vec3.reserve(count); double startTime3 = clock();//3计算开始 for(int i = 0; i < count; i++) { Person person(i, i, name); vec3.emplace(vec3.begin() + i, person); } double endTime3 = clock();//3时间结束 cout << "vec3.size=" << vec3.size() << " vec3.capacity=" << vec3.capacity() << endl; vec3.clear(); cout << "for 3 run time is: " << (double)(endTime3 - startTime3) / CLOCKS_PER_SEC << "s" << endl; cout << endl;}int main(){ //int = [-2147483648, 2147483647] insert_emplace_reserve_Test(); cout << endl; cout << "Hello World!" << endl; return 0;}

 

 

转载地址:http://pfiub.baihongyu.com/

你可能感兴趣的文章
Spring源码剖析8:Spring事务概述
查看>>
Spring源码剖析9:Spring事务源码剖析
查看>>
重新学习Mysql数据库1:无废话MySQL入门
查看>>
探索Redis设计与实现2:Redis内部数据结构详解——dict
查看>>
探索Redis设计与实现3:Redis内部数据结构详解——sds
查看>>
探索Redis设计与实现4:Redis内部数据结构详解——ziplist
查看>>
探索Redis设计与实现6:Redis内部数据结构详解——skiplist
查看>>
探索Redis设计与实现5:Redis内部数据结构详解——quicklist
查看>>
探索Redis设计与实现8:连接底层与表面的数据结构robj
查看>>
探索Redis设计与实现7:Redis内部数据结构详解——intset
查看>>
探索Redis设计与实现9:数据库redisDb与键过期删除策略
查看>>
探索Redis设计与实现10:Redis的事件驱动模型与命令执行过程
查看>>
分布式系统理论基础1: 一致性、2PC和3PC
查看>>
分布式系统理论基础2 :CAP
查看>>
分布式系统理论基础3: 时间、时钟和事件顺序
查看>>
分布式系统理论基础4:Paxos
查看>>
分布式系统理论基础5:选举、多数派和租约
查看>>
分布式系统理论基础6:Raft、Zab
查看>>
分布式系统理论进阶7:Paxos变种和优化
查看>>
分布式系统理论基础8:zookeeper分布式协调服务
查看>>