码迷,mamicode.com
首页 > 其他好文 > 详细

vector详讲(三)

时间:2019-02-14 19:06:16      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:临时   stream   cto   return   bsp   abc   iostream   tor   ons   

移动语义:

push语句有时候会通过移动语义来提高性能

#include <iostream>
#include <vector>

class Element
{
public:
    Element(int im,std::string string) :
            Im(im),mString(string)
    {

    }

    virtual ~Element()
    {}

private:
    int Im;
    std::string mString;
};

int main()
{
    std::vector<Element> myIntVec;
    Element myEle(10,"abcd");
    myIntVec.push_back(myEle);

    return 0;
}
myIntVec不是临时对象,所以在执行这条语句的时候,会对 myIntVec 进行复制副本,所以为了避免这种复制,可以这样。
myIntVec.push_back(std::move(myEle));

这样做的后果就是再也不能调用myEle了,

在push_back(const  T&& val );这样的定义,可以这样:

myIntVec.push_back(Element(10,"abcd"));
emplace操作

在C++中emplace的意思就是 "放置到位"的意思。std::vector的方法有emplace_back();这个方法与push_back()不同就是他不会复制和移动任何数据,只会在容器内部分配空间,就地创建对象。

 

vector详讲(三)

标签:临时   stream   cto   return   bsp   abc   iostream   tor   ons   

原文地址:https://www.cnblogs.com/boost/p/10376439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!