COIN-OR::LEMON - Graph Library

Changeset 104:cdbba181b786 in lemon-1.0


Ignore:
Timestamp:
03/20/08 22:59:35 (16 years ago)
Author:
Alpar Juttner <alpar@…>
Branch:
default
Phase:
public
Message:

Restored (and modified) StoreBoolMap? (it was removed in 7ff1c348ae0c)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/maps.h

    r82 r104  
    16681668  }
    16691669
     1670  namespace _maps_bits {
     1671
     1672    template <typename Value>
     1673    struct Identity {
     1674      typedef Value argument_type;
     1675      typedef Value result_type;
     1676      Value operator()(const Value& val) const {
     1677        return val;
     1678      }
     1679    };
     1680
     1681    template <typename _Iterator, typename Enable = void>
     1682    struct IteratorTraits {
     1683      typedef typename std::iterator_traits<_Iterator>::value_type Value;
     1684    };
     1685
     1686    template <typename _Iterator>
     1687    struct IteratorTraits<_Iterator,
     1688      typename exists<typename _Iterator::container_type>::type>
     1689    {
     1690      typedef typename _Iterator::container_type::value_type Value;
     1691    };
     1692
     1693  }
     1694
     1695  /// \brief Writable bool map for logging each \c true assigned element
     1696  ///
     1697  /// A \ref concepts::ReadWriteMap "read-write" bool map for logging
     1698  /// each \c true assigned element, i.e it copies subsequently each
     1699  /// keys set to \c true to the given iterator.
     1700  ///
     1701  /// \tparam It the type of the Iterator.
     1702  /// \tparam Ke the type of the map's Key. The default value should
     1703  /// work in most cases.
     1704  ///
     1705  /// \note The container of the iterator must contain enough space
     1706  /// for the elements. (Or it should be an inserter iterator).
     1707  ///
     1708  /// \todo Revise the name of this class and give an example code.
     1709  template <typename It,
     1710            typename Ke=typename _maps_bits::IteratorTraits<It>::Value>
     1711  class StoreBoolMap {
     1712  public:
     1713    typedef It Iterator;
     1714
     1715    typedef Ke Key;
     1716    typedef bool Value;
     1717
     1718    /// Constructor
     1719    StoreBoolMap(Iterator it)
     1720      : _begin(it), _end(it) {}
     1721
     1722    /// Gives back the given iterator set for the first key
     1723    Iterator begin() const {
     1724      return _begin;
     1725    }
     1726
     1727    /// Gives back the the 'after the last' iterator
     1728    Iterator end() const {
     1729      return _end;
     1730    }
     1731
     1732    /// The set function of the map
     1733    void set(const Key& key, Value value) const {
     1734      if (value) {
     1735        *_end++ = key;
     1736      }
     1737    }
     1738
     1739  private:
     1740    Iterator _begin;
     1741    mutable Iterator _end;
     1742  };
     1743
    16701744  /// @}
    16711745}
Note: See TracChangeset for help on using the changeset viewer.