zoukankan      html  css  js  c++  java
  • C++11:13emplace_back减少内存拷贝

    13emplace_back减少内存拷贝

    课前秀

    • push_back()比,emplace_back()能就地通过参数构造对象,不需要拷贝或者移动内存
    • 在cppreference.com里搜索“emplace_back”,其实是容器里的一个方法而已。
      • list,deque,vector,pmr::list,pmr::deque,pmr::vector
      • emplace,emplace_hint,emplace_front,emplace_after和emplace_back
    • emplace的意思是安置就位,push的意思是推开。

    1、vector的emplace_back的基本用法

    #include<vector>
    #include<iostream>
    using namespace std;
    struct A
    {
        int x;
        double y;
        A(int a, double b):x(a),y(b){}
    };
    
    int main()
    {
        vector<A> v;
        v.emplace_back(1,2);//通过构造函数的参数构造对象
        cout<<v.size()<<endl;
        return 0;
    }
    

    2、emplace_back和push_back的性能差异

    • [代码2-5所示],没写呢

    ReadMe

    • 20200504第1版,看《深入应用C++11》2.4。
      • 粗略的知道对push_back省去移动内存,但具体原理是啥,没细追究呢。
  • 相关阅读:
    Codeforces 1072
    XDOJ 1046
    BZOJ 1002
    BZOJ 1001
    BZOJ 1500/Luogu 2042
    nowcoder 211B
    BZOJ 3224
    BZOJ 1150
    POJ 2442
    二叉堆和二叉搜索树进阶
  • 原文地址:https://www.cnblogs.com/fewolflion/p/12854597.html
Copyright © 2011-2022 走看看