C++ · Intermediário · Inglês · Técnico
emplace back
Função de contêineres como vector que constrói o elemento direto dentro do contêiner, repassando os argumentos ao construtor, sem criar um temporário para copiar ou mover.
Onde usar
Aparece em laços que preenchem vetores de objetos com vários campos. Em tipos baratos de copiar, a diferença para push_back é pequena.
Em código
struct P {
P(std::string n, int i) : n_(n), i_(i) {}
std::string n_; int i_;
};
std::vector<P> v;
v.push_back(P("ana", 3)); // temporário
v.emplace_back("bia", 4); // no lugarExemplos
Use emplace back and pass the constructor arguments.
Use emplace back e passe os argumentos do construtor.
No temporary here, emplace back builds it in place.
Sem temporário aqui, o emplace back constrói no lugar.
Cuidado
Não é sempre mais rápido que push_back; com um objeto já pronto o resultado é parecido, e conversões implícitas escondidas podem surpreender.
Sinônimos
construção no lugar
Antônimos
push back