Предположим, у меня есть std::vector<T> from
и std::vector<T> to
, где T
- это не копируемый, но перемещаемый тип, а to
может быть или не быть пустым. Я хочу, чтобы все элементы в from
добавлялись после to
.
Если я использую перегрузку std::vector<T>::insert(const_iterator pos, InputIt first, InputIt last)
(4) с pos = to.end()
, он попытается скопировать все объекты.
Теперь, если to.empty()
, я мог бы просто std::move(from)
, а в противном случае я мог бы сначала from.reserve(from.size()+to.size())
, а затем вручную to.emplace_back(std::move(from[i]))
каждый элемент from
и, наконец, from.clear()
.
Есть ли прямой способ сделать это с помощью std
вспомогательной функции или оболочки?