Да, используйте std::move
:
#include <algorithm>
std::move(b.begin(), b.end(), std::back_inserter(a));
В качестве альтернативы вы можете использовать итераторы перемещения:
a.insert(a.end(),
std::make_move_iterator(b.begin()), std::make_move_iterator(b.end()));
Не забудьте #include <iterator>
в обоих случаях, и прежде чем начать,скажем:
a.reserve(a.size() + b.size());
В зависимости от стоимости инициализации значения по сравнению с проверкой и увеличением счетчика размеров, следующий вариант также может быть интересен:
std::size_t n = a.size();
a.resize(a.size() + b.size());
std::move(b.begin(), b.end(), a.begin() + n);