If I have two vectors and want to combine them to one, I can do it the following way:
std::vector a(100); // just some random size here
std::vector&
Yes, use std::move
:
#include
std::move(b.begin(), b.end(), std::back_inserter(a));
Alternatively, you can use move iterators:
a.insert(a.end(),
std::make_move_iterator(b.begin()), std::make_move_iterator(b.end()));
Remember to #include
in both cases, and before you begin, say:
a.reserve(a.size() + b.size());
Depending on the cost of value-initialization compared to checking and incrementing the size counter, the following variant may also be interesting:
std::size_t n = a.size();
a.resize(a.size() + b.size());
std::move(b.begin(), b.end(), a.begin() + n);