将语义从一个矢量移动到另一个矢量

问题描述 投票:0回答:1

如果有向量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);

这实际上会移动数据而不是复制数据并提高性能吗?

c++ move-semantics
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.