Imagine a class C
that has a member variable m_MyList
of type std::vector
in which I want to store objects of type MyClass
. C
has two functions that add or remove objects in m_MyList
.
m_MyList
should also be made accessible for consumers of C
as they need to read the collection of MyClass
objects. The external reader of the collection will have no means to change the collection, thus the MyClass
objects are owned only by C
.
Now my question: In C++11 style, what is the best T to store in the vector? The possibilities seem to be:
std::vector<MyClass>
std::vector<MyClass*>
std::vector<unique_ptr<MyClass>>
, usingstd:move
to push theunique_ptr
into thevector