二维数组深拷贝C++
时间: 2024-09-22 08:06:26 浏览: 42
在C++中,二维数组的深度拷贝意味着创建一个新的完全独立的数组副本,包括其中的所有元素。这通常涉及到两层复制:一层是数组的大小信息,另一层是数组内部每个元素的值。由于C++不支持直接对数组进行浅拷贝,因此对于基本数据类型的数组,只需复制地址即可;但对于自定义类型,如结构体或类的对象,需要递归地复制每个元素。
以下是C++中二维数组深度拷贝的一种常见做法:
```cpp
#include <vector>
using namespace std;
// 假设我们有一个自定义类MyClass
class MyClass {
public:
// ...省略构造函数和成员变量
};
// 对应于二维数组的容器是vector<vector<MyClass>>,这里演示如何深度复制
vector<vector<MyClass>> deepCopy(const vector<vector<MyClass>>& src) {
vector<vector<MyClass>> copy(src.size(), vector<MyClass>(src[0].size()));
for (int i = 0; i < src.size(); ++i) {
for (int j = 0; j < src[i].size(); ++j) {
copy[i][j] = *src[i][j]; // 深度复制,使用构造函数
}
}
return copy;
}
// 使用示例
vector<vector<MyClass>> original = {/*...*/};
vector<vector<MyClass>> copied = deepCopy(original);
```
阅读全文