VHISTlib  1.84.0.3018
/daten/ahuesgen/projects/vhist/code/vhistlib/include/vhistdifflib/priorityqueue.h
00001 /* $HEADERS
00002  $Id: priorityqueue.h 2179 2011-06-24 09:03:24Z ahuesgen $
00003  */
00004 
00005 #include <queue>
00006 #include <vector>
00007 #include <QPair>
00008 #include <QtDebug>
00009 
00010 #include "../shared/misc_defines.h"
00011 
00012 namespace vhist
00013 {
00014 
00015 template<class T>
00016 class CompareMe
00017 {
00018     public:
00019         bool operator() (const QPair<T, int>& x, const QPair<T, int>& y)
00020         {
00021             return x.second > y.second;
00022         }
00023 };
00024 
00025 template<class T>
00026 class VHIST_EXTERN PriorityQueue
00027 {
00028     private:
00029         typedef QPair<T, int> QueueEntry;
00030 
00031     private:
00032         std::priority_queue<QueueEntry, std::vector<QueueEntry>, CompareMe<T> > m_queue;
00033 
00034     public:
00035         void push(const T& entry, int costs);
00036         const T& head();
00037         int headCosts();
00038         T pop();
00039         int size();
00040         bool isEmpty();
00041 };
00042 
00043 } // namespace vhist
00044 
00045 /*template<class T>
00046 void printQueue(PriorityQueue<T> queue)
00047 {
00048     qDebug() << "Queue:";
00049     while (!queue.isEmpty())
00050     {
00051         qDebug() << "*" << queue.headCosts();
00052         queue.pop();
00053     }
00054 }*/
00055 
00056 #include "priorityqueue.tpl"

VHISTlib 1.84.0.3018 of Jun 28 2013, generated by doxygen.