std::vector::insert copies or moves elements to the container by calling the copy constructor or moving the constructor.
while,
In std::vector::emplace elements are built in place , that is, copy or move operations are not performed.
It was later introduced with C ++ 11, and its use is desirable if copying for your class is a nontrivial operation.
source share