push_back vs emplace_back: Was ist der Unterschied und was soll man wählen?
Hallo, Kollegen! Ich bin ein Anfänger in C++ und bin kürzlich auf ein Dilemma gestoßen: Wann soll ich push_back und wann emplace_back verwenden? \n\nIch habe eine einfache Klasse:\n\n```cpp\nclass MyClass {\npublic:\n MyClass(int x, int y) : x_(x), y_(y) {}\nprivate:\n int x_, y_;\n};\n```\n\nIch füge Objekte auf zwei Arten zum Vektor hinzu:\n\n```cpp\nstd::vector vec;\n\n// Methode 1\nvec.push_back(MyClass(10, 20));\n\n// Methode 2\nvec.emplace_back(10, 20);\n```\n\nBeide funktionieren, aber ich habe gehört, dass emplace_back schneller ist. Wie kritisch ist das? Gibt es Fälle, in denen push_back vorzuziehen ist? Oder ist emplace_back immer besser?\n\nBesonders interessiert mich: Was passiert mit temporären Objekten, Move-Semantik und Kopieren? Im Internet gibt es viele widersprüchliche Informationen, ich möchte eine klare Antwort von erfahrenen Entwicklern. Danke!\n<<>>\n
Hauptunterschied: Wo das Objekt erstellt wird
\n\nDer Hauptunterschied zwischen push_back und emplace_back liegt im Ort der Erstellung