c++ - vector<Point> myArr 的深拷贝

标签 c++ vector member deep-copy libstdc++

为了对myArr进行深拷贝,

vector <Point> myArr;

其中 Point 是一个有 2 个整数作为成员的类,

我需要做一些特别的事情吗?或者可以

vector <Point> otherArr = myArr;

我需要删除 otherArr 中的一些点,但同时我需要 myArr 中的所有点以备后用。

提前致谢

最佳答案

参见 Shallow vs Deep CopiesEffective C++

Point 不需要深拷贝。 作为经验法则,当类具有指针成员时,“深拷贝”是必需的。 Point 类只有两个 int 成员,因此“深拷贝”不需要任何特殊的努力,普通或“浅拷贝”就可以了。事实上,不需要Point 编写复制构造函数,编译器提供的默认或合成的复制构造函数就可以了。

关于你的第二个问题,行后

vector< Point > otherArr = myArr;

被执行时,otherArrmyArr是两个独立 vector 。对其中一个执行的操作(例如删除某些元素)不会以任何方式影响另一个。

关于c++ - vector<Point> myArr 的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896429/

相关文章:

c++ - Intel 上的多线程比 AMD 慢得多

c++ - 我当前的项目需要对网站进行快照

c++ - 将 const* 存储在 const vector 中

r - 如何检查矩阵是否是矩阵列表的元素?在 R

constructor - 枚举构造函数(创建成员的成员)

c++ - wxGenericDirCtrl 错误 "wxTheFileIconsTable was nullptr"

c++ - 使用 C++ 模板实现树

C++ 向量化 vector 的 vector

javascript - 从实用程序文件访问 cc.Director 成员和函数

javascript,在匿名对象创建期间访问其他成员?