为了制作myArr
的深层副本,
vector <Point> myArr;
其中Point
是一个有2个整数的类,
我需要做一些特别的事吗? <或者
vector <Point> otherArr = myArr;
我需要删除otherArr
中的一些点,但同时我需要myArr
中的所有点以供日后使用。
提前致谢
答案 0 :(得分:7)
请参阅Shallow vs Deep Copies和Effective C++
Point
不需要深层复制。作为一个拇指规则,当一个类有指针成员时,需要“深层复制”。 Point
类只有两个int
成员,因此“深度复制”不需要任何特殊工作,正常或“浅拷贝”会完全正常。实际上,为Point
编写复制构造函数并不是 required ,编译器提供的默认或复合构造函数就可以了。
关于你的第二个问题,在
行之后vector< Point > otherArr = myArr;
已执行,otherArr
和myArr
是两个独立向量。在其中一个上执行的操作(例如删除一些元素)不会以任何方式影响另一个。
答案 1 :(得分:1)
任务应该没问题。它确保所有数据都被正确复制。只需确保Point是可复制的。
答案 2 :(得分:1)
你有什么好。该向量具有重载的赋值运算符和执行深层复制的复制构造函数。