首页 > 解决方案 > C++ 可以使用移动语义将数据从一个向量移动到另一个向量

问题描述

下面的代码将数据从一个向量复制到另一个向量。如果向量很大,那么我想这很昂贵。是否可以在这里使用移动语义将数据从一个向量复制到另一个向量?

std::vector<double> newData(Shape.Size(), 0);
std::vector<double> oldData = a->getData();
std::copy(oldData.begin(), oldData.end(), newData.begin());

标签: c++c++11vectormove-semantics

解决方案


您可以使用算法std::move而不是std::copy

std::move(oldData.begin(), oldData.end(), newData.begin());

它仍然会逐个传输元素,但会移动它们。不要忘记预先分配具有正确大小的向量,以避免过多地移动元素。


推荐阅读