Подтвердить что ты не робот

С++ std::vector emplace vs insert

Мне было интересно, какие различия между ними. Я заметил, что emplace - это С++ 11 дополнение. Итак, почему добавление?

4b9b3361

Ответ 1

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));

Ответ 2

insert копирует объекты в вектор.

emplace постройте их внутри вектора.