为了对myArr
进行深拷贝,
vector <Point> myArr;
其中 Point
是一个有 2 个整数作为成员的类,
我需要做一些特别的事情吗?或者可以
vector <Point> otherArr = myArr;
我需要删除 otherArr
中的一些点,但同时我需要 myArr
中的所有点以备后用。
提前致谢
最佳答案
参见 Shallow vs Deep Copies和 Effective C++
Point
不需要深拷贝。 作为经验法则,当类具有指针成员时,“深拷贝”是必需的。 Point
类只有两个 int
成员,因此“深拷贝”不需要任何特殊的努力,普通或“浅拷贝”就可以了。事实上,不需要为 Point
编写复制构造函数,编译器提供的默认或合成的复制构造函数就可以了。
关于你的第二个问题,行后
vector< Point > otherArr = myArr;
被执行时,otherArr
和myArr
是两个独立 vector 。对其中一个执行的操作(例如删除某些元素)不会以任何方式影响另一个。
关于c++ - vector<Point> myArr 的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896429/