Как перенести данные из одного вектора в другой?

Есть std::vector<char> fromBlock с 10^9 элементов.
И есть пустой std::vector<char> toBlock

Нужно максимально быстро перенести данные fromBlock в toBlock, при этом очистить fromBlock.
Это осложнено тем, что данную операцию нужно проивести в функции, в которой есть лишь указатель на fromBlock, а также внутри функции живет toBlock (в ней он создается и в ней разрушается).

Пример:

int main(){
    std::vector<char> fromBlock;
    ... // Здесь заполняем fromBlock
    сonvert(&fromBlock);
}

void convert(std::vector<char>* fromBlock){
    std::vector<char> toBlock;
    ...// Здесь как-то и должно произвестись переменщение
}

Собственно, как перенести данные из одного вектора в другой?

P.S.
Читал про
std::move

, но особо не понял, как он работает и есть ли алтернатива.


Ответы (1 шт):

Автор решения: Alrott SlimRG

Спасибо, @ДжонниКэтсвилл

Можно использовать std::swap - работает за константу

Можно также использовать std::move - тоже работает за константу

Разница вот в чем:

swap
1) поменять данные местами

move
1) Освободить ресурсы в конечном векторе
2) Присвоить данные
3) Обнулить вектор, данные из которого переместили

Код, чтобы посмотреть разницу в работе
https://ideone.com/OmEjbl

→ Ссылка