🫑emplace_back 减少内存拷贝和移动|C++11
对于STL容器,C++11后引入了emplace_back接口。 emplace_back是就地构造,不用构造后再次复制到容器中。因此效率更高。 考虑这样的语句:
上述语句足够简单易懂,将一个string对象添加到testVec中。底层实现:
首先,string(16, ‘a’)会创建一个string类型的临时对象,这涉及到一次string构造过程。
其次,vector内会创建一个新的string对象,这是第二次构造。
最后在push_back结束时,最开始的临时对象会被析构。加在一起,这两行代码会涉及到两次 string构造和一次析构。
c++11
可以用emplace_back
代替push_back
,emplace_back
可以直接在vector
中构建一个对象,而非创建一个临时对象,再放进vector
,再销毁。emplace_back
可以省略一次构建和一次析构,从而达到优化的目的.
Last updated