2013-02-09 16 views

risposta

84

Emplace accetta gli argomenti necessari per costruire un oggetto sul posto, mentre insert prende (un riferimento a) un oggetto.

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 copie oggetti nel vettore.

emplacecostruire all'interno del vettore.

+5

Si noti che in C++ 11 'insert' non è necessario copiare, ma può anche spostarsi. – juanchopanza

+10

Vale la pena ricordare che mentre l'inserto può spostarsi se viene usato un cast di rvalue, potrebbe non farlo. Da qui la raccomandazione di Scott Meyer di utilizzare l'emplace quando è possibile per chiarezza delle prestazioni. – jeremyong