Разница между методами pushback и emplaceback в векторе заключается в следующем:
- push_back добавляет копию объекта (или обеспечивает перемещение, если возможно). ru.stackoverflow.com Если конструктор принимает более одного аргумента, то передаётся только объект этого типа, что приводит к созданию временного объекта, который затем копируется в вектор. github.com
- emplace_back создаёт объект непосредственно в конце вектора, то есть без лишнего копирования или перемещения. ru.stackoverflow.com Метод может принять несколько аргументов без вызова конструктора. pasharodygin.github.io
Таким образом, pushback более универсален, но emplaceback позволяет повысить эффективность кода, создавая объект непосредственно в памяти, управляемой вектором. github.com
Ещё одно отличие в том, что pushback принимает только объект типа, если конструктор принимает более одного аргумента, а emplaceback принимает аргументы конструктора этого типа. github.com