Stavo cercando di trovare un modo semplice per inserire elementi in un std::vector<std::shared_ptr<int>>
ma non è possibile venire con nulla. std::shared_ptr
prende puntatori come parametri, così posso ancora scrivere questo:funzioni make_shared e emplace
std::vector<std::shared_ptr<int>> vec;
vec.emplace_back(new int(10));
Tuttavia, non voglio usare new
a mano se possibile, e sarebbe piuttosto desidera utilizzare std::make_shared
se possibile. Il problema è che se voglio davvero usarlo, devo usare push_back
invece e perdere il vantaggio di costruzione sul posto:
std::vector<std::shared_ptr<int>> vec;
vec.push_back(std::make_shared<int>(10));
C'è un modo per ottenere i vantaggi di entrambi emplace_back
e std::make_shared
? In caso contrario, c'è una linea guida che dovrei seguire in questo caso?
MODIFICA: In realtà, ho fatto questa domanda, ma ho avuto un problema non correlato. La risposta di Andy è buona e non c'è alcun problema con l'utilizzo di entrambe le funzioni emplace
e std::make_shared
contemporaneamente.
penso che sia buono come si sta per arrivare –
Non Ha appena detto che non poteva farlo? – 0x499602D2
@ 0x499602D2: perché no? –