2013-02-09 8 views

Antwort

84

Emplace nimmt die Argumente, die notwendig sind, um ein Objekt an der richtigen Stelle zu konstruieren, wohingegen insert ein Objekt aufnimmt (eine Referenz darauf).

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 kopiert Objekte in den Vektor.

emplacekonstruieren sie innerhalb des Vektors.

+5

Beachten Sie, dass in C++ 11 'einfügen' nicht kopiert werden muss, es kann auch verschoben werden. – juanchopanza

+10

Es ist erwähnenswert, dass sich die Einfügung verschieben kann, wenn sie einen rvalue-Cast verwendet, möglicherweise nicht. Daher empfiehlt Scott Meyer, emplace wann immer möglich zu verwenden, um die Leistung zu verbessern. – jeremyong