push_back vs emplace_back : quelle est la différence et que choisir ?
Bonjour, collègues ! Je suis un développeur C++ débutant et j'ai récemment été confronté à un dilemme : quand utiliser push_back et quand utiliser emplace_back ?
J'ai une classe simple :
```cpp
class MyClass {
public:
MyClass(int x, int y) : x_(x), y_(y) {}
private:
int x_, y_;
};
```
J'ajoute des objets au vecteur de deux manières :
```cpp
std::vector vec;
// Méthode 1
vec.push_back(MyClass(10, 20));
// Méthode 2
vec.emplace_back(10, 20);
```
Les deux fonctionnent, mais j'ai entendu dire que emplace_back est plus rapide. À quel point est-ce critique ? Y a-t-il des cas où push_back est préférable ? Ou emplace_back est-il toujours meilleur ?
Ce qui m'intéresse particulièrement : que se passe-t-il avec les objets temporaires, la move semantics et la copie ? Il y a beaucoup d'informations contradictoires sur Internet, j'aimerais obtenir une réponse claire de développeurs expérimentés. Merci !
<<>>
Différence principale : où l'objet est créé
La principale différence entre push_back et emplace_back réside dans le lieu de création