智能指针 queue
时间: 2023-08-18 17:11:27 浏览: 73
智能指针queue是指使用智能指针来实现的队列数据结构。通过使用智能指针,可以避免内存泄漏和手动管理内存的麻烦。下面是一个使用智能指针实现的队列的示例代码:
引用中的代码示例:
```cpp
template<class T>
class SmartPtr {
public:
SmartPtr(T* ptr = nullptr) : _ptr(ptr) {}
~SmartPtr() { if (_ptr) delete _ptr; }
T& operator*() { return *_ptr; }
T* operator->() { return _ptr; }
private:
T* _ptr;
};
template<class T>
class Queue {
public:
Queue() {}
void enqueue(const T& value) {
_data.push_back(SmartPtr<T>(new T(value)));
}
void dequeue() {
_data.pop_front();
}
T& front() {
return *_data.front();
}
bool empty() const {
return _data.empty();
}
private:
std::list<SmartPtr<T>> _data;
};
int main() {
Queue<int> q;
q.enqueue(1);
q.enqueue(2);
std::cout << q.front() << std::endl; // 输出1
q.dequeue();
std::cout << q.front() << std::endl; // 输出2
return 0;
}
```
在上面的示例代码中,我们定义了一个Queue类,使用std::list和智能指针SmartPtr来实现一个基本的队列数据结构。enqueue函数将元素插入队列的末尾,dequeue函数将队列头部的元素移除,front函数返回队列头部的元素,empty函数用于判断队列是否为空。通过使用智能指针SmartPtr,我们可以在队列中存储动态分配的对象,并在对象不再需要时自动释放内存,避免内存泄漏的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++智能指针](https://blog.csdn.net/weixin_44614083/article/details/126082469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]