2013-02-09 122 views

回答

84

Emplace採用必要的參數來構造一個對象,而插入需要(引用)對象。

struct Foo 
{ 
    Foo(int n, double x); 
}; 

std::vector<Foo> v; 
v.emplace(someIterator, 42, 3.1416); 
v.insert(someIterator, Foo(42, 3.1416)); 
21

insert拷貝對象到載體中。

emplace構造它們在向量內部。

+5

請注意,在C++ 11中'insert'不需要複製,它也可以移動。 – juanchopanza 2013-02-09 12:47:34

+10

值得一提的是,雖然插入可能會移動,如果它使用右值轉換,它可能不會。因此,Scott Meyer建議儘可能使用emplace來表現清晰。 – jeremyong 2013-12-06 23:37:43