给出一个 std::vector 对另一个向量的内存的所有权?
Give a std::vector ownership of another vector's memory?
>我有一个看起来像这样的构造函数:
Thing::Thing(std::vector<uint8> & data){
m_data = data; // m_data is also a vector<uint8>
// do other stuff
}
但是,data
拥有相当大的内存块,我希望data
简单地将其交给m_data
,而不是复制它,因为调用者在构造此对象后将永远不需要它。 在C++做到这一点的最佳方法是什么?
您可以使用移动分配运算符。
m_data = std::move(data);
最好将参数类型更改为值或右值引用,以便函数的用户不会对输入参数的内容已移动感到惊讶。
Thing::Thing(std::vector<uint8>&& data){
m_data = std::move(data);
// do other stuff
}
鉴于此,调用函数将意识到它们需要传递右值引用,并且不会对内容的移动感到惊讶。
最好使用 data
初始化m_data
,而不是分配给它。
Thing::Thing(std::vector<uint8>&& data) : m_data(std::move(data))
{
// do other stuff
}
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 将一个向量插入另一个向量的某个位置
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 如何按另一个向量的方向调整一个向量?
- 将字符向量复制到另一个向量
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 如何避免将向量的完整值复制到另一个容器
- 如何将所有指针从一个向量移动到另一个向量?
- 如何从另一个向量中的另一个第一元素减去向量中的第一元素
- 用一个向量替换另一个向量的方法
- 如何根据另一个向量中给出的索引拆分向量?
- 如何在另一个类中调用类型类的向量?
- 按另一个向量对一个向量进行排序
- 具有多线程支持的 RenderClass,将函数调用推送到向量以在另一个线程上调用
- 如何设置一个 std::vector 与另一个,其中两个是不同类的向量?