ch02

2.4 emplace_back减少内存拷贝

#include <vector>
#include <map>
#include <string>
#include <iostream>

using namespace std;

struct Complicated
{
    int year;
    double country;
    std::string name;

    Complicated(int a, double b, std::string c) :year(a), country(b), name(c)
    {
        cout << "is conrtusted" << endl;
    }

    Complicated(const Complicated & other)
        : year(other.year)
        , country(other.country)
        , name(std::move(other.name))
    {
        cout << "is moved" << endl;
    }
};

int main()
{
    std::map<int, Complicated> m;
    int aInt = 4;
    double aDouble = 5.0;
    std::string aString = "C++";
    cout << "--insert--" << endl;

    m.insert(std::make_pair(4, Complicated(aInt, aDouble, aString)));

    cout << "--emplace--" << endl;
    m.emplace(4, Complicated(aInt, aDouble, aString));

    cout << "--emplce_back--" << endl;
    vector<Complicated> v;
    v.emplace_back(aInt, aDouble, aString);
    cout << "--push_back--" << endl;
    v.push_back(Complicated(aInt, aDouble, aString));

    system("pause");
}

运行结果:

时间: 2024-12-18 07:49:06

ch02的相关文章

# 课下测试ch02

课下测试ch02 1.假设下面位串是基于IEEE格式的5位浮点表示,一个符号位,2个阶码位,两个小数位.下面正确的是(AD) A . 3.5的表示是[01011] B . -1.0的表示[01111] C . 0.5的表示是[00011] D . 1.5的表示是[00110] 解析: 1. IEEE浮点表示: 符号:s通过其值1负和0正决定V的正负,对于V=0另作解释. 尾数:M是一个二进制小数,它的范围是1 – 2-ε,或者0 – 1-ε 阶码:E的作用是对浮点数加权,权重是2的E次幂(可能是

利用python进行数据分析D1——ch02引言

基础的课程还没学完,就来这本了,因为我平时的研究还是以数据的处理为主.谁说女子不如男 把自己的事做好做细致,嘻嘻 读了一下介绍部分,下载书里用到的数据,下载地址:https://github.com/wesm/pydata-book 如果你需要完成以下几大类任务,那你选这本书准没错: 与外界进行交互 读取各种各样的文件格式和数据库 准备 对数据进行清理.修整.规范化等处理以便进行分析 转换 对数据集做一些数学和统计运算以便产生新的数据集 建模和计算 将数据同统计模型.机器学习算法和其他计算工具联

Ch02 控制结构和函数 - 练习

1. 一个数字如果为正数,则它的signum为1:如果是负数,则signum为-1:如果是0,则signum为0.编写一个函数来计算这个值. scala> def signum(x:Int):Int = if(x>0)1 else if(x==0) 0 else -1 signum: (x: Int)Int scala> signum(100) res6: Int = 1 scala> signum(0) res7: Int = 0 scala> signum(-2) res

机器学习实战Ch02: k-近邻算法

k-近邻算法算是一个非常暴力也非常好理解的算法 (抽象来讲,就是和谁长得像就分为哪一类 如何划分长得像还是不像的尺度? 把特征值当做坐标,把个体当做线性空间中的离散点,取k个离目标最近的训练集点,进行label vote,少数服从多数. That's it. 至于什么是label vote...完全是自己yy的名词,就是取出现次数最多的label而已啦 当训练集的数据足够多,k取得足够大的时候,其实是不用担心次数出现相同的情况的 另外要注意对数据量度的"标准化"处理,此处对应下文aut

Ch02 从零开始实例学习2

2.添加视图 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view 3.添加模型 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model 4.通过控制器访问模型数据 http://www.asp.net/mvc/tutorials/mvc-4/getting-st

JAVA中的责任链模式(CH02)

对责任链CH01做出优化,解决耦合度太高问题 记得上一篇我们使用的是抽象类,然后用子类去继承的方法实现等级的桥接,从而发现了耦合度太高. 为了解决这个问题. 我们本次使用接口进行抽象,然后使用到一个"中介"对所要申请的经费进行自动判断. 这个类似于web的过滤器.让我们来Look一Look吧! 一,首先我们创建一个接口,抽象出审批费用的方法 public interface AbstractHandler { //抽象审批经费的方法,这里有两个参数 //第一个参数是:申请经费 //第二

《 Java 编程思想》CH02 一切都是对象

尽管Java中一切都看作为对象,但是操纵的标识符实际上对象的一个“引用”. String s; // 这里只是创建了一个引用,而不是一个对象 String s = new String("abcd"); // 使用`new`操作符来创建一个对象,并将其与一个引用相关联 String s = "abcd"; // 字符串可以直接用带引号的文本初始化 必须由你创建所有对象 使用 new 操作符创建一个对象 存储到什么位置 由五个地方可以存储数据: 寄存器:由于寄存器数量

【Effective Java】8、优先考虑类型安全的异构容器

有的时候我们一个容器只有一个类型或几个类型并不能满足我们的要求,比如set中存放的元素类型都是同一种,map也就指定的两种 这里我们可以将键进行参数化,而不是将容器参数化,也就是我们可以给容器传一个键的类型,然后value用来放对应的实例,这样就可以存放多个不同的类型了 如: package cn.xf.cp.ch02.item29; import java.util.HashMap; import java.util.Map; public class ManyTypeClass { //一个

Machine Learning In Action 第二章学习笔记: kNN算法

本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数字识别 通过“约会对象”功能,基本能够了解到kNN算法的工作原理.“手写数字识别”与“约会对象预测”使用完全一样的算法代码,仅仅是数据集有变化. 约会对象预测 1 约会对象预测功能需求 主人公“张三”喜欢结交新朋友.“系统A”上面注册了很多类似于“张三”的用户,大家都想结交心朋友.“张三”最开始通过自己筛选的