Как перенести данные из одного вектора в другой?
Есть 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 шт):
Спасибо, @ДжонниКэтсвилл
Можно использовать std::swap - работает за константу
Можно также использовать std::move - тоже работает за константу
Разница вот в чем:
swap
1) поменять данные местамиmove
1) Освободить ресурсы в конечном векторе
2) Присвоить данные
3) Обнулить вектор, данные из которого переместили
Код, чтобы посмотреть разницу в работе
https://ideone.com/OmEjbl