VHISTlib
1.84.0.3018
|
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"