Generated on Mon Jun 23 17:17:53 2008 for ell-2.3.0 by doxygen 1.5.1

src/ell/util/PriorityQueue.hh

Go to the documentation of this file.
00001 #ifndef PRIORITYQUEUE_HH_
00002 #define PRIORITYQUEUE_HH_
00003 
00004 #include <map>
00005 #include <set>
00006 
00007 #include "ell/State.hh"
00008 
00009 namespace ell {
00010   namespace util {
00011 
00017         template<class QV> // QueueValue of PriorityQueue_ as template parameter
00018         class PriorityQueue
00019     {
00020     public:
00021     
00023         class QueueKey {
00024         public:
00026             double E;
00028             CSequence s; 
00031             bool operator<(const QueueKey& toCompare) const;
00032             
00033             QueueKey();
00034             QueueKey(const double E, const CSequence& s);
00035             ~QueueKey();
00036         };
00037         
00038         
00039     protected:
00041         typedef typename std::map< QueueKey, QV > InternalPQtype;
00042         
00044         InternalPQtype pq;
00045                 
00046     public:
00047     
00049         typedef typename InternalPQtype::const_iterator const_iterator;
00051         typedef typename InternalPQtype::iterator iterator;
00053         typedef typename InternalPQtype::size_type size_type;
00054     
00056         PriorityQueue();
00058         virtual ~PriorityQueue();
00059         
00061         const_iterator begin(void) const;
00063         const_iterator end(void) const;
00064     
00066         iterator begin(void);
00068         iterator end(void);
00069     
00071         const_iterator top(void) const;
00072         
00074         void pop(void);
00075         
00078         size_type size(void) const;
00079         
00082         bool empty(void) const;
00083         
00088         const_iterator find(const State* s) const;
00093         iterator find(const State* s);
00098         const_iterator find(const QueueKey& key) const;
00103         iterator find(const QueueKey& key);
00104     
00112         iterator insert(const State* keyState);
00120         iterator insert(const QueueKey& key);
00121         
00124         void erase(const State* s);
00127         void erase(const QueueKey& key);
00128         
00131         double getMaxE(void) const;
00132     
00136         void reduceMaxE(const double maxE);
00137     
00138     };
00139 
00140   } // namespace util
00141 } // namespace ell
00142 
00143 #include "ell/util/PriorityQueue.icc"
00144 
00145 #endif /*PRIORITYQUEUE_HH_*/