C++ 移动语义将数据从一个向量移动到另一个向量

C++ 移动语义将数据从一个向量移动到另一个向量,c++,move-semantics,C++,Move Semantics,如果我有一个向量std::vector oldData,我可以使用移动语义将数据移动到另一个向量std::vector newData 而不是做: std::vector<uint8_t> newData(oldData.begin(),oldData.end()); std::vector newData(oldData.begin(),oldData.end()); 我能做什么 std::vector<uint8_t> newData = std::move(o

如果我有一个向量
std::vector oldData
,我可以使用移动语义将数据移动到另一个向量
std::vector newData

而不是做:

std::vector<uint8_t> newData(oldData.begin(),oldData.end()); 
std::vector newData(oldData.begin(),oldData.end()); 我能做什么

std::vector<uint8_t> newData = std::move(oldData);
std::vector newData=std::move(oldData);

这是否真的会移动数据而不是复制数据,从而提高性能

否。如果仔细考虑,不可能将64位整数数组转换为8位整数数组,因此必须为新数组分配新空间(小8倍),然后复制旧数组中每个整数的最低有效8位。

可以执行
uint8_t*newData=reinterpret_cast(oldData.data());
如果只想将旧向量中的数据视为字节数组,则无法执行此操作!请注意,
oldData
int64\t
类型的数组。