Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为了制作深拷贝myArr,
myArr
vector <Point> myArr;
哪里Point是一个有 2 个整数作为成员的类,
Point
我需要做一些特别的事情吗?或者可以
vector <Point> otherArr = myArr;
我需要删除一些点,otherArr但同时我需要所有点以myArr供以后使用。
otherArr
提前致谢
请参阅浅拷贝与深拷贝和有效 C++
Point不需要深拷贝。作为一个经验法则,当一个类有指针成员时,需要“深拷贝”。该类Point只有两个int成员,因此“深拷贝”不需要任何特别的努力,普通或“浅拷贝”就可以了。实际上,不需要为 编写复制构造函数Point,编译器提供的默认或合成的构造函数就可以了。
int
关于你的第二个问题,在线路之后
vector< Point > otherArr = myArr;
被执行,otherArr并且myArr是两个独立的向量。对其中一个执行的操作(例如删除某些元素)不会以任何方式影响另一个。
任务应该没问题。它确保所有数据都被正确复制。只要确保 Point 是可复制的。
你所拥有的很好。向量有一个重载的赋值运算符和执行深度复制的复制构造函数。