【问题标题】:Move sematics to move data from one vector to another移动语义将数据从一个向量移动到另一个向量
【发布时间】:2020-03-30 13:20:07
【问题描述】:

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

这是否会真正移动数据而不是复制数据并提高性能?

【问题讨论】:

  • 如果您只想将旧向量中的数据视为字节数组,您可以使用uint8_t* newData = reinterpret_cast&lt;uint8_t*&gt;(oldData.data());
  • 做不到!注意oldData 是一个int64_t 类型的数组。

标签: c++ move-semantics


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 2011-08-13
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2022-12-11
    • 2020-07-01
    • 2013-06-05
    • 2012-08-09
    相关资源
    最近更新 更多