c++ - C++ 可以使用移动语义将数据从一个向量移动到另一个向量
问题描述
下面的代码将数据从一个向量复制到另一个向量。如果向量很大,那么我想这很昂贵。是否可以在这里使用移动语义将数据从一个向量复制到另一个向量?
std::vector<double> newData(Shape.Size(), 0);
std::vector<double> oldData = a->getData();
std::copy(oldData.begin(), oldData.end(), newData.begin());
解决方案
您可以使用算法std::move
而不是std::copy
:
std::move(oldData.begin(), oldData.end(), newData.begin());
它仍然会逐个传输元素,但会移动它们。不要忘记预先分配具有正确大小的向量,以避免过多地移动元素。
推荐阅读
- deno - 为什么特定版本的 drash 会导致 deno 出错?
- c++ - 尝试通过 Ubuntu 上的 CLion 将 GLFW 从源代码链接到 C++ 项目时出错
- ruby-on-rails - 除了使用 body 标签之外,如何在特定页面中禁用 Turbolinks?
- swiftui - SwiftUI navigationBarItem 在显示不同的较大项目后显示在奇怪的位置
- javascript - 如何将多 ngif 应用于表格上的数据显示?
- javascript - Tomcat servlet 在本地机器上工作,在服务器上中断
- android - Android Studios:使用移动数据连接时无法连接到服务器
- c# - C#从文本框中计算多个值
- python - 优化列表内每个类实例的检查属性
- ios - 如何在 Fscalender 自定义 Swift 中更改背景颜色