C ++ moves to container
I have a class like this:
class Object {
...
}
and a container that essentially consists of std::vector<Object>
:
class ObjectContainer {
public:
void addObject(Object ?? object);
...
private:
std::vector<Object> vector;
}
Now, after I have initialized the instance Object
, I would like to add the instance to the container and forget about something like:
Container container;
{
Object object(args...);
// Maybe more object initialization
container.addObject( object );
}
Now - if possible, I would like the container, i.e. std::vector<Object>
to "take" the current instance of an object without copying, is it possible? And the implementation Container::addObject
would be as simple as:
void Container::addObject( Object && object) {
vector.push_back( object );
}
source to share
Instead of preparing an object and then moving it to the container as a final step, why not create an object inside the container to start from there and continue moving it?
This is how you could do it std::vector
directly:
std::vector<Object> vector;
vector.emplace_back(args...);
Object& object = vector.back();
You can then perform further initialization operations using object
that is already part of the vector.
source to share