src/lemon/bin_heap.h
changeset 967 6563019430ba
parent 921 818510fa3d99
child 1164 80bb73097736
     1.1 --- a/src/lemon/bin_heap.h	Mon Nov 08 08:40:37 2004 +0000
     1.2 +++ b/src/lemon/bin_heap.h	Mon Nov 08 15:22:39 2004 +0000
     1.3 @@ -32,6 +32,11 @@
     1.4    /// @{
     1.5  
     1.6     /// A Binary Heap implementation.
     1.7 +  
     1.8 +  ///\todo Please document...
     1.9 +  ///
    1.10 +  ///\sa FibHeap
    1.11 +  ///\sa Dijkstra
    1.12    template <typename Item, typename Prio, typename ItemIntMap,
    1.13  	    typename Compare = std::less<Prio> >
    1.14    class BinHeap {
    1.15 @@ -67,11 +72,15 @@
    1.16      ItemIntMap &iim;
    1.17  
    1.18    public:
    1.19 +    ///\e
    1.20      BinHeap(ItemIntMap &_iim) : iim(_iim) {}
    1.21 +    ///\e
    1.22      BinHeap(ItemIntMap &_iim, const Compare &_comp) : comp(_comp), iim(_iim) {}
    1.23  
    1.24  
    1.25 +    ///\e
    1.26      int size() const { return data.size(); }
    1.27 +    ///\e
    1.28      bool empty() const { return data.empty(); }
    1.29  
    1.30    private:
    1.31 @@ -101,13 +110,16 @@
    1.32      }
    1.33  
    1.34    public:
    1.35 +    ///\e
    1.36      void push(const PairType &p) {
    1.37        int n = data.size();
    1.38        data.resize(n+1);
    1.39        bubble_up(n, p);
    1.40      }
    1.41 +    ///\e
    1.42      void push(const Item &i, const Prio &p) { push(PairType(i,p)); }
    1.43  
    1.44 +    ///\e
    1.45      Item top() const {
    1.46        return data[0].first;
    1.47      }
    1.48 @@ -116,19 +128,23 @@
    1.49        return data[0].second;
    1.50      }
    1.51  
    1.52 +    ///\e
    1.53      void pop() {
    1.54        rmidx(0);
    1.55      }
    1.56  
    1.57 +    ///\e
    1.58      void erase(const Item &i) {
    1.59        rmidx(iim[i]);
    1.60      }
    1.61  
    1.62 +    ///\e
    1.63      Prio operator[](const Item &i) const {
    1.64        int idx = iim[i];
    1.65        return data[idx].second;
    1.66      }
    1.67  
    1.68 +    ///\e
    1.69      void set(const Item &i, const Prio &p) {
    1.70        int idx = iim[i];
    1.71        if( idx < 0 ) {
    1.72 @@ -142,15 +158,18 @@
    1.73        }
    1.74      }
    1.75  
    1.76 +    ///\e
    1.77      void decrease(const Item &i, const Prio &p) {
    1.78        int idx = iim[i];
    1.79        bubble_up(idx, PairType(i,p));
    1.80      }
    1.81 +    ///\e
    1.82      void increase(const Item &i, const Prio &p) {
    1.83        int idx = iim[i];
    1.84        bubble_down(idx, PairType(i,p), data.size());
    1.85      }
    1.86  
    1.87 +    ///\e
    1.88      state_enum state(const Item &i) const {
    1.89        int s = iim[i];
    1.90        if( s>=0 )