1 #ifndef EDGE_MAP_REGISTRY_H
2 #define EDGE_MAP_REGISTRY_H
6 #include "edge_map_base.h"
8 template <typename G, typename E>
9 class EdgeMapRegistry {
14 typedef EdgeMapBase<Graph, Edge> MapBase;
17 typedef std::vector<EdgeMapBase*> Container;
21 void add(MapBase& map_base) {
23 map_base.graph->edge_maps.erase(map_base);
25 container.push_back(&map_base);
26 map_base.graph = this;
27 map_base.graph_index = container.size()-1;
30 void erase(MapBase& map_base) {
31 if (map_base.graph != this) return;
32 container.back()->graph_index = map_base.graph_index;
33 container[map_base.graph_index] = container.back();
38 void add(Edge& edge) {
39 typename Container::iterator it;
40 for (it = container.begin(); it != container.end(); ++it) {
45 void erase(Edge& edge) {
46 typename Container::iterator it;
47 for (it = container.begin(); it != container.end(); ++it) {