C++之通用队列模版
功能:在qtcreator上用模版的方式实现队列数据格式存储多样化。
模版实现的两种方式:
1、模版的实现直接在头文件里声明并定义,别的类通过#include"*.h"进行包含,则可以实现调用该类并实例化。
2、可以在cpp文件里直接定义模版的具体功能,别的类需要调用该类时,只能通过#include"*.cpp"文件, 如果以#include "*.h"方式,则会出错。
#ifndef TEMPLATERQUEUE_H #define TEMPLATERQUEUE_H #include <QQueue> #include <QMutex> #include <QMutexLocker> template<class T> class TemplateRQueue { public: TemplateRQueue(); bool setQueueData(const T tmp); bool getQueueData(T *tmp); int getQueueLength(); bool clearQueue(); private: QQueue<T> *m_pRQueueData; bool lockFlag; QMutex m_mutex; }; template<class T> TemplateRQueue<T>::TemplateRQueue() { m_pRQueueData = new QQueue<T>; lockFlag = false; } template<class T> bool TemplateRQueue<T>::setQueueData(const T tmp) { QMutexLocker locker(&m_mutex); if(lockFlag == true) return false; else { lockFlag = true; m_pRQueueData->enqueue(tmp); lockFlag = false; return true; } } template<class T> bool TemplateRQueue<T>::getQueueData(T *tmp) { QMutexLocker locker(&m_mutex); if(lockFlag == true) return false; else { lockFlag = true; if(m_pRQueueData->isEmpty()) { lockFlag = false; return false; } else { *tmp = m_pRQueueData->dequeue(); lockFlag = false; return true; } } } template<class T> int TemplateRQueue<T>::getQueueLength() { QMutexLocker locker(&m_mutex); if(lockFlag == true) return false; else { return m_pRQueueData->length(); } } template<class T> bool TemplateRQueue<T>::clearQueue() { QMutexLocker locker(&m_mutex); if(lockFlag == true) return false; else { m_pRQueueData->clear(); return true; } } #endif // TEMPLATERQUEUE_H
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?