簡體   English   中英

C ++向量emplace_back更快嗎?

[英]c++ vector emplace_back is faster?

如果我有課

class foo {
 public:
  foo() { // spend some time and do something. }
 private:
   // some data here
}

現在我有一個foo的向量,我想將此向量放入另一個向量

vector<foo> input; // assume it has 5 elements
vector<foo> output;

這兩條線有什么性能差異?

output.push_back(input[0])
output.emplace_back(input[0])

這兩條線有什么性能差異?

不,兩者都將使用復制構造函數初始化新元素。

當使用一個(或少於)一個參數構造時, emplace_back可能會帶來好處:

output.push_back(foo{bar, wibble}); // Constructs and moves a temporary
output.emplace_back(bar, wibble);   // Initialises directly

emplace的真正好處不在於性能,而是在於允許在容器中創建不可復制(有時在某些情況下不可移動)的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM