c++ - smart - Make_shared y emplace funciones
smart pointers c++ (1)
Podrías dejar que la construcción de movimiento en el lugar ocurra:
vec.emplace_back(std::make_shared<int>(42));
Estaba intentando encontrar una manera fácil de ubicar elementos en un std::vector<std::shared_ptr<int>>
pero no podía venir con nada. std::shared_ptr
toma los punteros como parámetros, así que todavía puedo escribir esto:
std::vector<std::shared_ptr<int>> vec;
vec.emplace_back(new int(10));
Sin embargo, no quiero usar new
a mano si es posible, y me gustaría usar std::make_shared
si es posible. El problema es que si realmente quiero usarlo, tengo que usar push_back
y perder la ventaja de la construcción en el lugar:
std::vector<std::shared_ptr<int>> vec;
vec.push_back(std::make_shared<int>(10));
¿Hay alguna forma de obtener las ventajas de emplace_back
y std::make_shared
? Si no, ¿hay alguna pauta que deba seguir en este caso?
EDIT: En realidad, hice esta pregunta, pero tenía un problema no relacionado. La respuesta de Andy es la buena y no hay ningún problema real con el uso de ambas funciones std::make_shared
y std::make_shared
a la vez.