• 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
  • 相关阅读:
    第三节:模板模式——在Spring框架应用
    第二节:模板模式——模板模式应用
    idea ---- intelij IDEA安装
    计算机基础 ---- 编码(er)
    preg_match一些问题
    php 两个值进行比较的问题
    php中in_array一些问题
    配置完php.ini中的扩展库后,重启apache出现错误1067
    基于Intel 174;E810 的OVS-DPDK VXLAN TUNNEL性能优化
    tc filter 工作模式:传统模式和 direct-action 模式
  • 原文地址:https://www.cnblogs.com/hzijone/p/5416425.html
Copyright © 2020-2023  润新知