Generated on Tue Dec 16 13:34:02 2008 for ell-3.0.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 
00013     class QueueKey {
00014     public:
00016         double E;
00018         CSequence s; 
00021         bool operator<(const QueueKey& toCompare) const;
00022         
00023         QueueKey();
00024         QueueKey(const double E, const CSequence& s);
00025         ~QueueKey();
00026     };
00027     
00033         template<class QV // QueueValue of PriorityQueue_ as template parameter
00034                 , class QK = QueueKey  // QueueKey with default
00035                 , typename CompareKey = std::less<QK> > // comparison operator
00036         class PriorityQueue
00037     {
00038     public:
00039     
00040           // access to the template arguments
00041         typedef QV QueueValue;
00042         typedef QK QueueKey;
00043         
00044     protected:
00046         typedef typename std::map< QK, QV, CompareKey > InternalPQtype;
00047         
00049         InternalPQtype pq;
00050                 
00051     public:
00052     
00054         typedef typename InternalPQtype::const_iterator const_iterator;
00056         typedef typename InternalPQtype::iterator iterator;
00058         typedef typename InternalPQtype::size_type size_type;
00060         typedef typename std::pair<iterator, bool> InsertResult;
00061 
00063         PriorityQueue();
00065         virtual ~PriorityQueue();
00066         
00068         const_iterator begin(void) const;
00070         const_iterator end(void) const;
00071     
00073         iterator begin(void);
00075         iterator end(void);
00076     
00078         const_iterator top(void) const;
00079         
00081         void pop(void);
00082         
00085         size_type size(void) const;
00086         
00089         bool empty(void) const;
00090         
00095         const_iterator find(const State* s) const;
00100         iterator find(const State* s);
00105         const_iterator find(const QK& key) const;
00110         iterator find(const QK& key);
00111     
00121         InsertResult insert(const State* keyState);
00131         InsertResult insert(const QK& key);
00132         
00135         void erase(const State* s);
00138         void erase(const QK& key);
00139         
00142         double getMaxE(void) const;
00143     
00147         void reduceMaxE(const double maxE);
00148     
00149     };
00150 
00151   } // namespace util
00152 } // namespace ell
00153 
00154 #include "ell/util/PriorityQueue.icc"
00155 
00156 #endif /*PRIORITYQUEUE_HH_*/