
David A. answered 10/10/19
Experienced C++ tutor who loves to mentor and pass on my knowledge
The short answer is that std::vector emplace_back forwards parameters to the constructor and avoids any extra copy or move operation required when using std::vector push_back. push_back may construct a temporary object, which then gets moved into the vector; whereas, emplace_back just forwards the argument(s) and constructs it directly in place with no copies or moves needed.
I hope this makes sense?