标签:临时 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()不同就是他不会复制和移动任何数据,只会在容器内部分配空间,就地创建对象。
标签:临时 stream cto return bsp abc iostream tor ons
原文地址:https://www.cnblogs.com/boost/p/10376439.html