push_back vs emplace_back: qual a diferença e o que escolher?
Olá, colegas! Sou um desenvolvedor C++ iniciante e recentemente me deparei com um dilema: quando usar push_back e quando usar emplace_back? \n\nTenho uma classe simples:\n\n```cpp\nclass MyClass {\npublic:\n MyClass(int x, int y) : x_(x), y_(y) {}\nprivate:\n int x_, y_;\n};\n```\n\nEstou adicionando objetos ao vector de duas maneiras:\n\n```cpp\nstd::vector vec;\n\n// Método 1\nvec.push_back(MyClass(10, 20));\n\n// Método 2\nvec.emplace_back(10, 20);\n```\n\nAmbos funcionam, mas ouvi dizer que emplace_back é mais rápido. Quão crítico é isso? Existem casos em que push_back é preferível? Ou emplace_back é sempre melhor?\n\nEstou especialmente interessado em: o que acontece com objetos temporários, move-semantics e cópia? Há muita informação contraditória na internet, quero obter uma resposta clara de desenvolvedores experientes. Obrigado!\n<<>>\n
Diferença principal: onde o objeto é criado
\n\nA principal diferença entre push_back e emplace_back está no local de criação do objeto.
No answers yet.
Faça login para deixar uma resposta
Blogs