c++类实现队列的深拷贝
时间: 2024-11-20 11:38:35 浏览: 27
在 C++ 中,类实现队列的深拷贝通常涉及到将一个队列的所有元素复制到一个新的队列中,每个元素都是通过逐个实例化新的对象并存储它们来进行的。这是因为浅拷贝仅复制了指针或引用,而不复制底层的数据。以下是使用 C++ STL 的 `queue` 类以及自定义类的一个简单示例:
```cpp
#include <iostream>
#include <queue>
#include <vector>
// 假设有一个自定义类 MyClass
class MyClass {
public:
MyClass(int value) : val(value) {}
private:
int val;
};
// 自定义队列类,使用 std::vector 存储
class MyQueue {
public:
// 构造函数
MyQueue() : items() {}
// 深拷贝构造函数
MyQueue(const MyQueue& other) : items(other.items) {} // 使用 deep copy
// 添加元素
void push(MyClass item) { items.push_back(item); }
// 删除并返回顶部元素
MyClass pop() { return items.front(); }
private:
std::vector<MyClass> items; // 使用 vector 存储数据
};
int main() {
MyQueue queue1({MyClass(1), MyClass(2), MyClass(3)});
MyQueue queue2(queue1); // 这里是深拷贝
// 验证两个队列的内容是否一致
while (!queue2.empty()) {
std::cout << "Queue2: " << queue2.pop().val << '\n';
}
return 0;
}
```
在这个例子中,`MyQueue` 类的构造函数接收另一个 `MyQueue` 类型的对象作为参数,并通过复制内部的 `std::vector<MyClass>` 来完成深拷贝。这样,在主函数中对 `queue1` 和 `queue2` 进行操作时,它们是独立的。
阅读全文