🔮 Разница между push_* и emplace_*
В STL для многих структур данных определены методы push_* и emplace_*. Между ними есть существенное различие
• push_*(...) — принимает готовый элемент
• emplace_*(...) — можно передавать только аргументы, а объект будет создан уже внутри. Если передать готовый объект, то компилятор подставит кастомный конструктор у которого единственный экземпляр это приём по ссылке того же типа, фактически создаст копирующий конструктор
Если не думать о читаемости кода, то сейчас можно использовать везде emplace_* без существенных, не опасаясь неожиданного поведения
Post #4474
5.69K

- 👍 15