ExpertiDict

C++ · Intermediário · Inglês · Técnico

emplace back

ɛmˈpleɪs bækverbo

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 lugar

Exemplos

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

Veja também

Todos os termos de C++