Avatar ·

push_back vs emplace_back: qual a diferença e o que escolher em C++?

Olá, colegas! Recentemente comecei a estudar C++11 e me deparei com o método emplace_back em std::vector. Antes, eu sempre usava push_back para adicionar elementos, mas agora vejo que surgiu uma alternativa. Li alguns artigos, mas não entendi completamente qual é a diferença fundamental. Aqui está um exemplo simples que escrevi para teste: ```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; // Opção 1: push_back people.push_back(Person("Alice", 30)); // Opção 2: emplace_back people.emplace_back("Bob", 25); } ``` Ambas as opções funcionam, mas notei que emplace_back aceita os argumentos do construtor diretamente, enquanto push_back requer um objeto temporário. Parece que emplace_back é mais conveniente, mas em todos os lugares escrevem que push_back ainda é relevante. Minhas perguntas: 1. Quando emplace_back é realmente mais eficiente que pu