83 votos

¿Por qué nunca utilizaría push_back en vez de emplace_back?

C ++ 11 vectores tienen la nueva función emplace_back . A diferencia de push_back , que se basa en las optimizaciones del compilador para evitar copias, emplace_back usos perfecto reenvío para enviar los argumentos directamente al constructor para crear un objeto en el lugar. Me parece que emplace_back todo lo que hace push_back pueden hacer, pero algunas veces lo hará mejor (pero nunca peor).

¿Qué razón tengo que usar push_back ?

62voto

Luc Danton Puntos 21421

push_backpermite el uso de la inicialización de uniforme, que me gusta de siempre. Por ejemplo:

struct aggregate {
    int foo;
    int bar;
};

std::vector<aggregate> v;
v.push_back({ 42, 121 });

Por otro lado, v.emplace_back({ 42, 121 }); no funcionará.

50voto

Mehrdad Puntos 70493

Al revés compatible con pre-11 compiladores de C ++.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X