如果有向量std::vector<int64_t> oldData
,可以使用移动语义将数据移动到另一个向量std::vector<uint8_t> newData
。
代替执行:
std::vector<uint8_t> newData(oldData.begin(),oldData.end());
我可以做
std::vector<uint8_t> newData = std::move(oldData);
这实际上会移动数据而不是复制数据并提高性能吗?
没有如果您仔细考虑一下,那是不可能的-将64位整数数组转换为8位整数数组,因此您必须为新数组分配新空间(小8倍),然后复制最少的空间旧数组中每个整数的有效8位。