#include "pch.h"
#include <iostream>
#include <vector>
#include <map>
#include <string>using namespace std;
int main()
{/*emplace_back 能就地通过参数构造对象,不需要拷贝或者移动内存,相比push_back能更好地避免内存的拷贝与移动。*/{// 基本用法 struct A {int x;int y;A(int a, double b) :x(a), y(b) {}};vector<A> v;v.emplace_back(1, 2);cout << v.size() << endl;}/*emplace_back 和 push_back的比较*/{struct Complicated {int year;double country;string name;Complicated(int a,double b,string c):year(a),country(b),name(c){cout << "is constructed" << endl;}Complicated(const Complicated& other):year(other.year),country(other.country),name(move(other.name)){cout << "is moved" << endl;}};map<int, Complicated> m;int anInt = 4;double aDouble = 5.0;string aString = "C++";cout << "--insert--" << endl;m.insert(make_pair(4, Complicated(anInt, aDouble, aString)));cout << "--emplace--" << endl; m.emplace(4, Complicated(anInt,aDouble,aString));cout << "--emplace_back--" << endl;vector<Complicated> v;v.emplace_back(anInt, aDouble, aString);cout << "--push_back--" << endl;v.push_back(Complicated(anInt, aDouble, aString));}
}

结果显示:

C++11 emplace_back相关推荐

  1. C++11之emplace_back

    在之前的学习中,了解到在STL中,进行插入元素的时候,有insert和push两种选择方式,而在有了右值引用和移动语义的时候,就提出了更高效的插入方法:emplace_back,下面来介绍一下C++1 ...

  2. C++11使用emplace_back代替push_back

    最近在写一段代码的时候,突然很好奇C++11中对push_back有没有什么改进以增加效率,上网搜了一些资料,发现果然新增了emplace_back方法,比push_back的效率要高很多. 首先,写 ...

  3. c++ 11 vector push_back和emplace_back速度比较

    对比两种push方法的效率及速度: #include<stdio.h> #include<time.h> #include<iostream> #include&l ...

  4. C++11:右值引用、移动构造、std::move, 以及使用emplace_back代替push_back

    最近在写一段代码的时候,突然很好奇C++11中对push_back有没有什么改进以增加效率,上网搜了一些资料,发现果然新增了emplace_back方法,比push_back的效率要高很多. 1.右值 ...

  5. c++11中emplace_back vs push_back

    引言 在C11中,有两种方法可以把元素放入容器中:emplace_back和push_back. push_back是C11之前就有的,而emplace_back是C11中新加的. 既然它们的作用都是 ...

  6. C++11:右值引用、move, 以及使用emplace_back代替push_back

    最近在写一段代码的时候,突然很好奇C++11中对push_back有没有什么改进以增加效率,上网搜了一些资料,发现果然新增了emplace_back方法,比push_back的效率要高很多. 1.右值 ...

  7. C++11介绍之vector::push_back和vector::emplace_back区别

    vector::push_back和vector::emplace_back区别 emplace_back() 和 push_back() 功能上类似,但底层实现机制是不同的.push_back() ...

  8. C++ 中emplace_back和push_back差异

    前言 最近看rocskdb源码,发现了大量的设计模式和C++高级特性,特此补充一下,巩固基础. 问题描述 其中关于动态数组的元素添加,代码中基本将push_back抛弃掉了,全部替换为emplace_ ...

  9. C++11容器中新增加的emplace相关函数的使用

    C++11中,针对顺序容器(如vector.deque.list),新标准引入了三个新成员:emplace_front.emplace和emplace_back,这些操作构造而不是拷贝元素.这些操作分 ...

  10. C++11中std::unique_lock的使用

    std::unique_lock为锁管理模板类,是对通用mutex的封装.std::unique_lock对象以独占所有权的方式(unique owership)管理mutex对象的上锁和解锁操作,即 ...

最新文章

  1. Windows下编译tensorflow-gpu教程
  2. 前端相关的一些小工具
  3. mysql中的时间函数---运维常用
  4. Docker怎样提交镜像(把容器打成镜像)
  5. socket 例子 java_java socket例子
  6. 关于SQL Server 2005 的自动远程数据库备份
  7. 作为一个菜鸟码农,如何判断你所在的团队是否有前途?
  8. 计算机招聘网站排名,2014年互联网名企招聘人数的高校
  9. 程序员打产品经理事件:做不了的事情,直接推给主管
  10. java中怎样上传zip_java服务器如何对zip文件分包上传?
  11. 【每日一题】一起冲击蓝桥杯吧——Day09【蓝桥真题一起练】
  12. 转:程序员应该怎样去学习和掌握计算机英语呢?
  13. 成大事必备的九种办法与能力
  14. 破解苹果电脑开机密码
  15. 3D建模师的工作环境到底是怎么样的?10年建模师:没有艺术天分,建模是我最好的选择
  16. 2021-04-1 芯片74LS161使用总结
  17. win7自动关机方法
  18. MySQL安装--无法初始化
  19. 支持视频滤镜的播放器(lomo, 变形,纹理叠加等算法)
  20. Mathematica入门

热门文章

  1. 搜狗输入法双拼 linux,Ubuntu搜狗输入法设置双拼
  2. 利用Jscript实现淘宝购物车的全选框功能
  3. 借助Amazon EMR与外部KDC进行身份认证,有效集成业务场景
  4. RNN实现股票预测实战案例
  5. 吴恩达深度学习工程师系列课程笔记(Deep Learning Specialization - deeplearning.ai)
  6. Spring Core 之 Validation, Data Binding(校验和数据绑定)
  7. 刘备是怎样“融资”创业的?
  8. 2018年,硅谷的P2P公司们为啥没跑路?
  9. MATLAB绘制图中图
  10. 8、某网络拓扑如图所示,路由器R1通过接口E1、E2分别连接局域网1、局域网2,通过接口L0连接路由器R2,并通过路由器R2连接域名服务器与互联网。R1的L0接口的IP地址是202.118.2.1/2