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

原文链接: https://www.cnblogs.com/hzijone/p/5416425.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/232263

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午3:25
下一篇 2023年2月13日 下午3:25

相关推荐