4

为了制作深拷贝myArr

vector <Point> myArr;

哪里Point是一个有 2 个整数作为成员的类,

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

vector <Point> otherArr = myArr;

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

提前致谢

4

3 回答 3

7

请参阅浅拷贝与深拷贝有效 C++

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

关于你的第二个问题,在线路之后

vector< Point > otherArr = myArr;

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

于 2010-10-09T17:32:16.473 回答
1

任务应该没问题。它确保所有数据都被正确复制。只要确保 Point 是可复制的。

于 2010-10-09T07:23:24.487 回答
1

你所拥有的很好。向量有一个重载的赋值运算符和执行深度复制的复制构造函数。

于 2010-10-09T07:24:07.757 回答