web-dev-qa-db-fra.com

C ++ std :: vector emplace vs insert

Je me demandais quelles sont les différences entre les deux. Je remarque que emplace est un ajout c ++ 11. Alors pourquoi l'ajout?

43
Aditya Sihag

Emplace prend les arguments nécessaires pour construire un objet en place, alors que insert prend (une référence à) un objet.

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

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

insert copie les objets dans le vecteur.

emplaceconstruct les à l'intérieur du vecteur.

37
hate-engine