lemon/maps.h
changeset 33 d794ec195ec0
parent 30 72364ba3466d
child 34 b88dd07e6349
equal deleted inserted replaced
3:9a1dbb5e8e6f 4:98b7931bedcc
    42   /// Base class of maps.
    42   /// Base class of maps.
    43   /// It provides the necessary <tt>typedef</tt>s required by the map concept.
    43   /// It provides the necessary <tt>typedef</tt>s required by the map concept.
    44   template<typename K, typename T>
    44   template<typename K, typename T>
    45   class MapBase {
    45   class MapBase {
    46   public:
    46   public:
    47     ///\e
    47     /// The key type of the map.
    48     typedef K Key;
    48     typedef K Key;
    49     ///\e
    49     /// The value type of the map. (The type of objects associated with the keys).
    50     typedef T Value;
    50     typedef T Value;
    51   };
    51   };
    52 
    52 
    53   /// Null map. (a.k.a. DoNothingMap)
    53   /// Null map. (a.k.a. DoNothingMap)
    54 
    54 
   247     struct rebind {
   247     struct rebind {
   248       typedef StdMap<Key, T1, C1> other;
   248       typedef StdMap<Key, T1, C1> other;
   249     };
   249     };
   250   };
   250   };
   251 
   251 
   252   /// \brief Map for storing values for the range \c [0..size-1] range keys
   252   /// \brief Map for storing values for keys from the range <tt>[0..size-1]</tt>
   253   ///
   253   ///
   254   /// The current map has the \c [0..size-1] keyset and the values
   254   /// The current map has the <tt>[0..size-1]</tt> keyset and the values
   255   /// are stored in a \c std::vector<T>  container. It can be used with
   255   /// are stored in a \c std::vector<T>  container. It can be used with
   256   /// some data structures, for example \c UnionFind, \c BinHeap, when 
   256   /// some data structures, for example \c UnionFind, \c BinHeap, when 
   257   /// the used items are small integer numbers. 
   257   /// the used items are small integer numbers. 
   258   ///
   258   ///
   259   /// \todo Revise its name
   259   /// \todo Revise its name
   827 
   827 
   828   ///This function just returns a \c CombineMap class.
   828   ///This function just returns a \c CombineMap class.
   829   ///
   829   ///
   830   ///For example if \c m1 and \c m2 are both \c double valued maps, then 
   830   ///For example if \c m1 and \c m2 are both \c double valued maps, then 
   831   ///\code
   831   ///\code
   832   ///combineMap<double>(m1,m2,std::plus<double>())
   832   ///combineMap(m1,m2,std::plus<double>())
   833   ///\endcode
   833   ///\endcode
   834   ///is equivalent to
   834   ///is equivalent to
   835   ///\code
   835   ///\code
   836   ///addMap(m1,m2)
   836   ///addMap(m1,m2)
   837   ///\endcode
   837   ///\endcode
   960 
   960 
   961   ///This \c concepts::ReadMap "read only map" returns the value
   961   ///This \c concepts::ReadMap "read only map" returns the value
   962   ///of a given functor.
   962   ///of a given functor.
   963   ///
   963   ///
   964   ///Template parameters \c K and \c V will become its
   964   ///Template parameters \c K and \c V will become its
   965   ///\c Key and \c Value. They must be given explicitly
   965   ///\c Key and \c Value. 
   966   ///because a functor does not provide such typedefs.
   966   ///In most cases they have to be given explicitly because a 
       
   967   ///functor typically does not provide such typedefs.
   967   ///
   968   ///
   968   ///Parameter \c F is the type of the used functor.
   969   ///Parameter \c F is the type of the used functor.
   969   ///
   970   ///
   970   ///\sa MapFunctor
   971   ///\sa MapFunctor
   971   template<typename F, 
   972   template<typename F, 
  1238   ///
  1239   ///
  1239   /// prim(graph, cost, writerMap);
  1240   /// prim(graph, cost, writerMap);
  1240   ///\endcode
  1241   ///\endcode
  1241   ///
  1242   ///
  1242   ///\sa BackInserterBoolMap 
  1243   ///\sa BackInserterBoolMap 
       
  1244   ///\sa FrontInserterBoolMap 
       
  1245   ///\sa InserterBoolMap 
  1243   ///
  1246   ///
  1244   ///\todo Revise the name of this class and the related ones.
  1247   ///\todo Revise the name of this class and the related ones.
  1245   template <typename _Iterator, 
  1248   template <typename _Iterator, 
  1246             typename _Functor =
  1249             typename _Functor =
  1247             _maps_bits::Identity<typename _maps_bits::
  1250             _maps_bits::Identity<typename _maps_bits::