Immaginate un class C
che abbia una variabile membro m_MyList
di tipo std::vector
in cui voglio memorizzare oggetti di tipo MyClass
. C
ha due funzioni che aggiungono o rimuovono oggetti in m_MyList
. m_MyList
dovrebbe anche essere reso accessibile per i consumatori di C
in quanto devono leggere la raccolta di oggetti MyClass
. Il lettore esterno della raccolta non avrà alcun mezzo per modificare la raccolta, pertanto gli oggetti MyClass
appartengono solo allo C
.Devo usare std :: unique_ptr <T> in una variabile membro std :: vector nella mia classe?
Ora la mia domanda: In stile C++ 11, qual è la T migliore da memorizzare nel vettore? Le possibilità sembrano essere:
std::vector<MyClass>
std::vector<MyClass*>
std::vector<unique_ptr<MyClass>>
, utilizzandostd:move
per spingere ilunique_ptr
nellavector
La soluzione 'unique_ptr' non ti compra davvero nulla, a meno che gli oggetti non siano copiabili. La versione raw pointer è decisamente dannosa. Basta andare per la soluzione semplice – jalf
Quanto è grande un oggetto 'MyClass' e quanti ne hai intenzione di memorizzare? Ci saranno molti singoli inserimenti? – RedX