Avatar ·

push_back vs emplace_back : quelle est la différence et que choisir en C++ ?

Bonjour, collègues ! J'ai récemment commencé à étudier C++11 et je suis tombé sur la méthode emplace_back de std::vector. Avant, j'utilisais toujours push_back pour ajouter des éléments, mais maintenant je vois qu'une alternative est apparue. J'ai lu plusieurs articles, mais je n'ai pas bien compris la différence fondamentale. Voici un exemple simple que j'ai écrit pour tester : ```cpp #include #include struct Person { std::string name; int age; Person(const std::string& n, int a) : name(n), age(a) {} }; int main() { std::vector people; // Option 1 : push_back people.push_back(Person("Alice", 30)); // Option 2 : emplace_back people.emplace_back("Bob", 25); } ``` Les deux options fonctionnent, mais j'ai remarqué que emplace_back prend directement les arguments du constructeur, tandis que push_back nécessite un objet temporaire. Apparemment, emplace_back est plus pratique, mais partout on écrit que push_back est toujours pertinent. Mes questions : 1. Quand emplace_back est-il vraiment plus efficace que push_back ?