Ответ 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));