deba@571: #ifndef VECTOR_MAP_H deba@571: #define VECTOR_MAP_H deba@571: deba@571: #include deba@571: deba@571: #include "map_base.h" deba@571: deba@571: namespace hugo { deba@571: deba@571: template deba@571: class VectorMapFactory { deba@571: deba@571: deba@571: public: deba@571: deba@571: typedef G Graph; deba@571: typedef K Key; deba@571: typedef KIt KeyIt; deba@571: deba@571: template deba@595: class Map : public MapBase { deba@571: public: deba@595: typedef V Value; deba@571: deba@595: Map() {} deba@571: deba@595: Map(Graph& g, MapRegistry& r) deba@595: : MapBase(g, r) { deba@595: init(); deba@595: } deba@595: deba@595: virtual ~Map() { deba@595: destroy(); deba@595: } deba@571: deba@571: deba@595: Value& operator[](const K& key) { deba@571: int id = graph->id(key); deba@571: return container[id]; deba@571: } deba@571: deba@595: const Value& operator[](const K& key) const { deba@571: int id = graph->id(key); deba@571: return container[id]; deba@571: } deba@571: deba@595: const Value& get(const K& key) const { deba@571: int id = graph->id(key); deba@571: return container[id]; deba@571: } deba@571: deba@595: void set(const K& key, const Value& val) { deba@571: int id = graph->id(key); deba@571: container[id] = val; deba@571: } deba@571: deba@571: void add(const K& key) { deba@571: int id = graph->id(key); deba@571: if (id >= container.size()) { deba@571: container.resize(id + 1); deba@571: } deba@571: } deba@571: deba@571: void erase(const K& key) {} deba@571: deba@571: private: deba@595: typedef std::vector Container; deba@571: deba@571: Container container; deba@571: }; deba@571: deba@571: }; deba@571: } deba@571: deba@571: #endif