c++如何拷贝一个存放自定义类型的vector
时间: 2023-08-11 14:01:42 浏览: 60
要拷贝一个存放自定义类型的vector,你需要确保自定义有合适的拷贝构造函数和赋值运算符重载。以下是一种常见的方法来拷贝一个存放自定义类型的vector:
```cpp
#include <iostream>
#include <vector>
// 自定义类型
class MyClass {
public:
int data;
MyClass(int d) : data(d) {}
// 拷贝构造函数
MyClass(const MyClass& other) {
data = other.data;
}
// 赋值运算符重载
MyClass& operator=(const MyClass& other) {
if (this != &other) {
data = other.data;
}
return *this;
}
};
int main() {
std::vector<MyClass> vec1;
// 向vec1添加元素
vec1.push_back(MyClass(1));
vec1.push_back(MyClass(2));
vec1.push_back(MyClass(3));
// 拷贝vec1到vec2
std::vector<MyClass> vec2(vec1);
// 打印vec2的内容
for (const auto& element : vec2) {
std::cout << element.data << " ";
}
return 0;
}
```
在上面的例子中,我们首先定义了一个自定义类型`MyClass`,然后在`main`函数中创建了一个存放`MyClass`对象的vector `vec1`。接下来,我们使用`push_back`方法向`vec1`添加了一些元素。然后,我们通过在初始化时将`vec1`传递给`vec2`来拷贝`vec1`。最后,我们打印了`vec2`的内容,以验证拷贝是否成功。
请注意,这种拷贝方式适用于存放自定义类型的vector,只要确保自定义类型具有合适的拷贝构造函数和赋值运算符重载。