/*! \page maps How to write your own maps \section read-maps Readable Maps The readable maps are very frequently used as the input of the algorithms. For this purpose the most straightforward is to use the maps provided by Hugo's graph structres. Very often however, it is more convenient and/or more efficient to write your own readable map. You can find some example below. This simple map assigns \f$\pi\f$ to each edge. \code struct MyMap { typedef double ValueType; double operator[](Graph::Edge e) const { return M_PI;} }; \endcode An alternative way to define maps. For this, \c MapBase seems to be a better name then \c NullMap \code struct MyMap : public MapBase { double operator[](Graph::Edge e) const { return M_PI;} }; \endcode Or, if we had \c KeyType and \c ValueType \code struct MyMap : public MapBase { ValueType operator[](KeyType e) const { return M_PI;} }; \endcode Here is a more complex example. It provides a length function which is obtained from a base length function modified by a potential difference. \code class MyLengthMap { const Graph::EdgeMap &ol; const Graph::NodeMap &pot; public: typedef double ValueType; double operator[](Graph::Edge e) const { return ol.get(e)-pot.get(v)-pot.get(u); } MyComplexMap(const Graph::EdgeMap &o,const Graph::NodeMap &p) : ol(o), pot(p); }; \endcode \todo Please improve on the english. \todo Don't we need \e to \e require a 'typedef xxx KeyType' tag, as well? */