emplace back與push back的區別

2021-09-11 04:20:59 字數 482 閱讀 8187

下面舉了幾種比較常見的情況:(以下所有**均假設存在乙個teacher類)

1、

#include int main()
執行v.push_back(teacher());這段**時,會發生拷貝構造,也就是將t1物件完全copy乙份到vector容器中

2、

#include int main()
執行.push_back(std::move(t1));這段**時,會發生移動構造。通俗一點講就是將t1的記憶體轉移到vector容器中,而不再高昂的代價去拷貝記憶體!但前提是不需要再訪問t1物件了!在執行該**之後,不可再訪問t1物件

3、

#include int main()
執行v.emplace_back();這行**,即預設呼叫無參建構函式直接構造teacher的物件。不需要拷貝構造或者移動構造!效能好

總結:能用emplace_back場景盡量使用

activemq接收訊息pull與push模式

1。同步和非同步的方式 public static void main string args else 非同步的方式接收訊息 consumer.setmessagelistener new messagelistener catch exception e 非同步接收 catch exceptio...

vector中emplace back方法的用途

在寫 的過程中,clion提醒我把push back方法替換成emplace back方法 emplace back函式的作用是減少物件拷貝和構造次數,是c 11中的新特性,主要適用於對臨時物件的賦值。在使用push back函式往容器中增加新元素時,必須要有乙個該物件的例項才行,而emplace ...

emplace back無法支援嗎

vector使用emplace back 無法新增元素,使用push back 卻可以。難道emplace back 與列表初始化不相容?非也!片段 std vector vec vec.emplace back error vec.push back pass報錯資訊 8 31 error no ...