unique_ptr smart shared_ptr make_shared example c++ c++11 shared-ptr smart-pointers

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.