Imagine un class C
que tiene un miembro variable m_MyList
de tipo std::vector
en el que quiero almacenar objetos del tipo MyClass
. C
tiene dos funciones que agregan o quitan objetos en m_MyList
. m_MyList
también debe hacerse accesible para los consumidores de C
ya que necesitan leer la colección de objetos MyClass
. El lector externo de la colección no tendrá medios para cambiar la colección, por lo tanto, los objetos MyClass
son propiedad solo de C
.¿Debo usar std :: unique_ptr <T> en una variable de miembro std :: vector en mi clase?
Ahora mi pregunta: En el estilo C++ 11, ¿cuál es la mejor T para almacenar en el vector? Las posibilidades parecen ser:
std::vector<MyClass>
std::vector<MyClass*>
std::vector<unique_ptr<MyClass>>
, utilizandostd:move
para empujar elunique_ptr
en elvector
La solución 'unique_ptr' realmente no le compra nada, a menos que los objetos no puedan copiarse. La versión del puntero sin procesar es francamente dañina. Simplemente busque la solución simple – jalf
¿Qué tan grande es un objeto 'MyClass' y cuántos está planeando almacenar? ¿Habrá muchas inserciones individuales? – RedX