gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge
0 1 0
merge default
0 files changed with 12 insertions and 9 deletions:
↑ Collapse diff ↑
Show white space 24 line context
... ...
@@ -35,27 +35,27 @@
35 35
namespace lemon {
36 36

	
37 37
  /// \addtogroup maps
38 38
  /// @{
39 39

	
40 40
  /// Base class of maps.
41 41

	
42 42
  /// Base class of maps.
43 43
  /// It provides the necessary <tt>typedef</tt>s required by the map concept.
44 44
  template<typename K, typename T>
45 45
  class MapBase {
46 46
  public:
47
    ///\e
47
    /// The key type of the map.
48 48
    typedef K Key;
49
    ///\e
49
    /// The value type of the map. (The type of objects associated with the keys).
50 50
    typedef T Value;
51 51
  };
52 52

	
53 53
  /// Null map. (a.k.a. DoNothingMap)
54 54

	
55 55
  /// This map can be used if you have to provide a map only for
56 56
  /// its type definitions, or if you have to provide a writable map, 
57 57
  /// but data written to it is not required (i.e. it will be sent to 
58 58
  /// <tt>/dev/null</tt>).
59 59
  template<typename K, typename T>
60 60
  class NullMap : public MapBase<K, T> {
61 61
  public:
... ...
@@ -240,27 +240,27 @@
240 240
    /// \e
241 241
    void setAll(const T &t) {
242 242
      _value = t;
243 243
      _map.clear();
244 244
    }    
245 245

	
246 246
    template <typename T1, typename C1 = std::less<T1> >
247 247
    struct rebind {
248 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 255
  /// are stored in a \c std::vector<T>  container. It can be used with
256 256
  /// some data structures, for example \c UnionFind, \c BinHeap, when 
257 257
  /// the used items are small integer numbers. 
258 258
  ///
259 259
  /// \todo Revise its name
260 260
  template <typename T>
261 261
  class IntegerMap {
262 262

	
263 263
    template <typename T1>
264 264
    friend class IntegerMap;
265 265

	
266 266
  public:
... ...
@@ -820,25 +820,25 @@
820 820
    CombineMap(const M1 &_m1,const M2 &_m2,const F &_f = F())
821 821
      : m1(_m1), m2(_m2), f(_f) {};
822 822
    /// \e
823 823
    Value operator[](Key k) const {return f(m1[k],m2[k]);}
824 824
  };
825 825
  
826 826
  ///Returns a \c CombineMap class
827 827

	
828 828
  ///This function just returns a \c CombineMap class.
829 829
  ///
830 830
  ///For example if \c m1 and \c m2 are both \c double valued maps, then 
831 831
  ///\code
832
  ///combineMap<double>(m1,m2,std::plus<double>())
832
  ///combineMap(m1,m2,std::plus<double>())
833 833
  ///\endcode
834 834
  ///is equivalent to
835 835
  ///\code
836 836
  ///addMap(m1,m2)
837 837
  ///\endcode
838 838
  ///
839 839
  ///This function is specialized for adaptable binary function
840 840
  ///classes and C++ functions.
841 841
  ///
842 842
  ///\relates CombineMap
843 843
  template<typename M1, typename M2, typename F, typename V> 
844 844
  inline CombineMap<M1, M2, F, V> 
... ...
@@ -953,26 +953,27 @@
953 953
  ///\relates AbsMap
954 954
  template<typename M> 
955 955
  inline AbsMap<M> absMap(const M &m) {
956 956
    return AbsMap<M>(m);
957 957
  }
958 958

	
959 959
  ///Converts an STL style functor to a map
960 960

	
961 961
  ///This \c concepts::ReadMap "read only map" returns the value
962 962
  ///of a given functor.
963 963
  ///
964 964
  ///Template parameters \c K and \c V will become its
965
  ///\c Key and \c Value. They must be given explicitly
966
  ///because a functor does not provide such typedefs.
965
  ///\c Key and \c Value. 
966
  ///In most cases they have to be given explicitly because a 
967
  ///functor typically does not provide such typedefs.
967 968
  ///
968 969
  ///Parameter \c F is the type of the used functor.
969 970
  ///
970 971
  ///\sa MapFunctor
971 972
  template<typename F, 
972 973
	   typename K = typename F::argument_type, 
973 974
	   typename V = typename F::result_type> 
974 975
  class FunctorMap : public MapBase<K, V> {
975 976
    F f;
976 977
  public:
977 978
    typedef MapBase<K, V> Parent;
978 979
    typedef typename Parent::Key Key;
... ...
@@ -1231,24 +1232,26 @@
1231 1232
  /// EdgeIdMap edgeId(graph);
1232 1233
  ///
1233 1234
  /// typedef MapFunctor<EdgeIdMap> EdgeIdFunctor;
1234 1235
  /// EdgeIdFunctor edgeIdFunctor(edgeId);
1235 1236
  ///
1236 1237
  /// StoreBoolMap<ostream_iterator<int>, EdgeIdFunctor> 
1237 1238
  ///   writerMap(ostream_iterator<int>(cout, " "), edgeIdFunctor);
1238 1239
  ///
1239 1240
  /// prim(graph, cost, writerMap);
1240 1241
  ///\endcode
1241 1242
  ///
1242 1243
  ///\sa BackInserterBoolMap 
1244
  ///\sa FrontInserterBoolMap 
1245
  ///\sa InserterBoolMap 
1243 1246
  ///
1244 1247
  ///\todo Revise the name of this class and the related ones.
1245 1248
  template <typename _Iterator, 
1246 1249
            typename _Functor =
1247 1250
            _maps_bits::Identity<typename _maps_bits::
1248 1251
                                 IteratorTraits<_Iterator>::Value> >
1249 1252
  class StoreBoolMap {
1250 1253
  public:
1251 1254
    typedef _Iterator Iterator;
1252 1255

	
1253 1256
    typedef typename _Functor::argument_type Key;
1254 1257
    typedef bool Value;
... ...
@@ -1296,25 +1299,25 @@
1296 1299
  /// BackInserterBoolMap<vector<Edge> > inserter_map(span_tree_edges);
1297 1300
  /// prim(graph, cost, inserter_map);
1298 1301
  ///\endcode
1299 1302
  ///
1300 1303
  ///\sa StoreBoolMap
1301 1304
  ///\sa FrontInserterBoolMap
1302 1305
  ///\sa InserterBoolMap
1303 1306
  template <typename Container,
1304 1307
            typename Functor =
1305 1308
            _maps_bits::Identity<typename Container::value_type> >
1306 1309
  class BackInserterBoolMap {
1307 1310
  public:
1308
    typedef typename Container::value_type Key;
1311
    typedef typename Functor::argument_type Key;
1309 1312
    typedef bool Value;
1310 1313

	
1311 1314
    /// Constructor
1312 1315
    BackInserterBoolMap(Container& _container, 
1313 1316
                        const Functor& _functor = Functor()) 
1314 1317
      : container(_container), functor(_functor) {}
1315 1318

	
1316 1319
    /// The \c set function of the map
1317 1320
    void set(const Key& key, Value value) {
1318 1321
      if (value) {
1319 1322
	container.push_back(functor(key));
1320 1323
      }
... ...
@@ -1331,25 +1334,25 @@
1331 1334
  /// Writable bool map for logging each \c true assigned element by pushing
1332 1335
  /// them into a front insertable container.
1333 1336
  /// It can be used to retrieve the items into a standard
1334 1337
  /// container. For example see \ref BackInserterBoolMap.
1335 1338
  ///
1336 1339
  ///\sa BackInserterBoolMap
1337 1340
  ///\sa InserterBoolMap
1338 1341
  template <typename Container,
1339 1342
            typename Functor =
1340 1343
            _maps_bits::Identity<typename Container::value_type> >
1341 1344
  class FrontInserterBoolMap {
1342 1345
  public:
1343
    typedef typename Container::value_type Key;
1346
    typedef typename Functor::argument_type Key;
1344 1347
    typedef bool Value;
1345 1348

	
1346 1349
    /// Constructor
1347 1350
    FrontInserterBoolMap(Container& _container,
1348 1351
                         const Functor& _functor = Functor()) 
1349 1352
      : container(_container), functor(_functor) {}
1350 1353

	
1351 1354
    /// The \c set function of the map
1352 1355
    void set(const Key& key, Value value) {
1353 1356
      if (value) {
1354 1357
	container.push_front(functor(key));
1355 1358
      }
0 comments (0 inline)