push_back是將一個(gè)元素拷貝(或移動)到容器的末尾,而emplace_back是直接在容器的末尾構(gòu)造一個(gè)新的元素。
push_back需要調(diào)用元素的拷貝構(gòu)造函數(shù)或移動構(gòu)造函數(shù),而emplace_back直接在原地構(gòu)造元素,避免了額外的拷貝開銷。
emplace_back通常比push_back更高效,因?yàn)樗苊饬藰?gòu)造臨時(shí)對象的開銷。所以在需要構(gòu)造新對象時(shí),推薦使用emplace_back來代替push_back。
emplace_back在構(gòu)造新元素時(shí),可以直接傳入構(gòu)造函數(shù)所需的參數(shù),而push_back則需要傳入一個(gè)已經(jīng)構(gòu)造好的元素。
總的來說,如果你有一個(gè)已經(jīng)構(gòu)造好的元素,可以使用push_back;如果需要構(gòu)造一個(gè)新元素并且不想額外拷貝對象,可以使用emplace_back。