Changeset 619:be6646ac5d89 in lemon
 Timestamp:
 04/04/09 08:30:58 (12 years ago)
 Branch:
 default
 Phase:
 public
 Files:

 2 edited
Legend:
 Unmodified
 Added
 Removed

lemon/maps.h
r606 r619 1833 1833 /// \c GR::Edge). 1834 1834 /// 1835 /// \see DescriptorMap1835 /// \see RangeIdMap 1836 1836 template <typename GR, typename K> 1837 1837 class IdMap : public MapBase<K, int> { … … 1899 1899 1900 1900 1901 /// \brief General invertable graph map type.1901 /// \brief General cross reference graph map type. 1902 1902 1903 1903 /// This class provides simple invertable graph maps. … … 1916 1916 /// \see IterableValueMap 1917 1917 template <typename GR, typename K, typename V> 1918 class InvertableMap1918 class CrossRefMap 1919 1919 : protected ItemSetTraits<GR, K>::template Map<V>::Type { 1920 1920 private: … … 1928 1928 public: 1929 1929 1930 /// The graph type of InvertableMap.1930 /// The graph type of CrossRefMap. 1931 1931 typedef GR Graph; 1932 /// The key type of InvertableMap (\c Node, \c Arc or \c Edge).1932 /// The key type of CrossRefMap (\c Node, \c Arc or \c Edge). 1933 1933 typedef K Item; 1934 /// The key type of InvertableMap (\c Node, \c Arc or \c Edge).1934 /// The key type of CrossRefMap (\c Node, \c Arc or \c Edge). 1935 1935 typedef K Key; 1936 /// The value type of InvertableMap.1936 /// The value type of CrossRefMap. 1937 1937 typedef V Value; 1938 1938 1939 1939 /// \brief Constructor. 1940 1940 /// 1941 /// Construct a new InvertableMap for the given graph.1942 explicit InvertableMap(const Graph& graph) : Map(graph) {}1941 /// Construct a new CrossRefMap for the given graph. 1942 explicit CrossRefMap(const Graph& graph) : Map(graph) {} 1943 1943 1944 1944 /// \brief Forward iterator for values. … … 1949 1949 class ValueIterator 1950 1950 : public std::iterator<std::forward_iterator_tag, Value> { 1951 friend class InvertableMap;1951 friend class CrossRefMap; 1952 1952 private: 1953 1953 ValueIterator(typename Container::const_iterator _it) … … 2073 2073 /// 2074 2074 /// Constructor of the InverseMap. 2075 explicit InverseMap(const InvertableMap& inverted)2075 explicit InverseMap(const CrossRefMap& inverted) 2076 2076 : _inverted(inverted) {} 2077 2077 2078 2078 /// The value type of the InverseMap. 2079 typedef typename InvertableMap::Key Value;2079 typedef typename CrossRefMap::Key Value; 2080 2080 /// The key type of the InverseMap. 2081 typedef typename InvertableMap::Value Key;2081 typedef typename CrossRefMap::Value Key; 2082 2082 2083 2083 /// \brief Subscript operator. … … 2090 2090 2091 2091 private: 2092 const InvertableMap& _inverted;2092 const CrossRefMap& _inverted; 2093 2093 }; 2094 2094 … … 2102 2102 }; 2103 2103 2104 /// \brief Provides a mutable, continuous and unique descriptor for each2105 /// item ina graph.2106 /// 2107 /// DescriptorMap provides a unique and continuous (but mutable)2108 /// descriptor (id) for each item of the sametype (\c Node, \c Arc or2104 /// \brief Provides continuous and unique ID for the 2105 /// items of a graph. 2106 /// 2107 /// RangeIdMap provides a unique and continuous 2108 /// ID for each item of a given type (\c Node, \c Arc or 2109 2109 /// \c Edge) in a graph. This id is 2110 2110 ///  \b unique: different items get different ids, 2111 2111 ///  \b continuous: the range of the ids is the set of integers 2112 2112 /// between 0 and \c n1, where \c n is the number of the items of 2113 /// this type (\c Node, \c Arc or \c Edge). So the id of an item can 2114 /// change if you delete an other item of the same type, i.e. this 2115 /// id is mutable. 2113 /// this type (\c Node, \c Arc or \c Edge). 2114 ///  So, the ids can change when deleting an item of the same type. 2116 2115 /// 2117 2116 /// Thus this id is not (necessarily) the same as what can get using … … 2126 2125 /// \see IdMap 2127 2126 template <typename GR, typename K> 2128 class DescriptorMap2127 class RangeIdMap 2129 2128 : protected ItemSetTraits<GR, K>::template Map<int>::Type { 2130 2129 … … 2132 2131 2133 2132 public: 2134 /// The graph type of DescriptorMap.2133 /// The graph type of RangeIdMap. 2135 2134 typedef GR Graph; 2136 /// The key type of DescriptorMap (\c Node, \c Arc or \c Edge).2135 /// The key type of RangeIdMap (\c Node, \c Arc or \c Edge). 2137 2136 typedef K Item; 2138 /// The key type of DescriptorMap (\c Node, \c Arc or \c Edge).2137 /// The key type of RangeIdMap (\c Node, \c Arc or \c Edge). 2139 2138 typedef K Key; 2140 /// The value type of DescriptorMap.2139 /// The value type of RangeIdMap. 2141 2140 typedef int Value; 2142 2141 2143 2142 /// \brief Constructor. 2144 2143 /// 2145 /// Constructor for descriptor map.2146 explicit DescriptorMap(const Graph& gr) : Map(gr) {2144 /// Constructor. 2145 explicit RangeIdMap(const Graph& gr) : Map(gr) { 2147 2146 Item it; 2148 2147 const typename Map::Notifier* nf = Map::notifier(); … … 2245 2244 } 2246 2245 2247 /// \brief Gives back the \e descriptor of the item.2248 /// 2249 /// Gives back the mutable and unique \e descriptor of the map.2246 /// \brief Gives back the \e RangeId of the item 2247 /// 2248 /// Gives back the \e RangeId of the item. 2250 2249 int operator[](const Item& item) const { 2251 2250 return Map::operator[](item); 2252 2251 } 2253 2252 2254 /// \brief Gives back the item b y its descriptor.2255 /// 2256 /// Gives back th item by its descriptor.2253 /// \brief Gives back the item belonging to a \e RangeId 2254 /// 2255 /// Gives back the item belonging to a \e RangeId. 2257 2256 Item operator()(int id) const { 2258 2257 return _inv_map[id]; … … 2266 2265 public: 2267 2266 2268 /// \brief The inverse map type of DescriptorMap.2269 /// 2270 /// The inverse map type of DescriptorMap.2267 /// \brief The inverse map type of RangeIdMap. 2268 /// 2269 /// The inverse map type of RangeIdMap. 2271 2270 class InverseMap { 2272 2271 public: … … 2274 2273 /// 2275 2274 /// Constructor of the InverseMap. 2276 explicit InverseMap(const DescriptorMap& inverted)2275 explicit InverseMap(const RangeIdMap& inverted) 2277 2276 : _inverted(inverted) {} 2278 2277 2279 2278 2280 2279 /// The value type of the InverseMap. 2281 typedef typename DescriptorMap::Key Value;2280 typedef typename RangeIdMap::Key Value; 2282 2281 /// The key type of the InverseMap. 2283 typedef typename DescriptorMap::Value Key;2282 typedef typename RangeIdMap::Value Key; 2284 2283 2285 2284 /// \brief Subscript operator. … … 2299 2298 2300 2299 private: 2301 const DescriptorMap& _inverted;2300 const RangeIdMap& _inverted; 2302 2301 }; 2303 2302 
test/graph_utils_test.cc
r463 r619 39 39 digraph.addNode(); 40 40 } 41 DescriptorMap<Digraph, Node> nodes(digraph);42 typename DescriptorMap<Digraph, Node>::InverseMap invNodes(nodes);41 RangeIdMap<Digraph, Node> nodes(digraph); 42 typename RangeIdMap<Digraph, Node>::InverseMap invNodes(nodes); 43 43 for (int i = 0; i < 100; ++i) { 44 44 int src = rnd[invNodes.size()]; … … 47 47 } 48 48 typename Digraph::template ArcMap<bool> found(digraph, false); 49 DescriptorMap<Digraph, Arc> arcs(digraph);49 RangeIdMap<Digraph, Arc> arcs(digraph); 50 50 for (NodeIt src(digraph); src != INVALID; ++src) { 51 51 for (NodeIt trg(digraph); trg != INVALID; ++trg) { … … 114 114 graph.addNode(); 115 115 } 116 DescriptorMap<Graph, Node> nodes(graph);117 typename DescriptorMap<Graph, Node>::InverseMap invNodes(nodes);116 RangeIdMap<Graph, Node> nodes(graph); 117 typename RangeIdMap<Graph, Node>::InverseMap invNodes(nodes); 118 118 for (int i = 0; i < 100; ++i) { 119 119 int src = rnd[invNodes.size()]; … … 122 122 } 123 123 typename Graph::template EdgeMap<int> found(graph, 0); 124 DescriptorMap<Graph, Edge> edges(graph);124 RangeIdMap<Graph, Edge> edges(graph); 125 125 for (NodeIt src(graph); src != INVALID; ++src) { 126 126 for (NodeIt trg(graph); trg != INVALID; ++trg) {
Note: See TracChangeset
for help on using the changeset viewer.