1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/src/work/deba/vector_map.h Fri Apr 16 13:42:03 2004 +0000
1.3 @@ -0,0 +1,48 @@
1.4 +#ifndef VECTOR_MAP_H
1.5 +#define VECTOR_MAP_H
1.6 +
1.7 +#include <vector>
1.8 +
1.9 +template <typename G, typename K, typename V, template <typename, typename> class MapBase >
1.10 +class VectorMap : public MapBase<G, K> {
1.11 +public:
1.12 + typedef V ValueType;
1.13 +
1.14 + VectorMap() {}
1.15 + VectorMap(G& g) : MapBase<G, K>(g) {
1.16 + init();
1.17 + }
1.18 +
1.19 + ~VectorMap() {
1.20 +// destroy();
1.21 + }
1.22 +
1.23 + ValueType& operator[](const K& key) {
1.24 + return container[key->id];
1.25 + }
1.26 +
1.27 + const ValueType& operator[](const K& key) const {
1.28 + return container[key->id];
1.29 + }
1.30 +
1.31 + const ValueType& get(const K& key) const {
1.32 + return container[key->id];
1.33 + }
1.34 +
1.35 + void set(const K& key, const ValueType& val) {
1.36 + container[key->id] = val;
1.37 + }
1.38 +
1.39 + void add(const K& key) {
1.40 + container.resize(key->id);
1.41 + }
1.42 +
1.43 + void erase(const K& key) {}
1.44 +
1.45 +private:
1.46 + typedef std::vector<ValueType> Container;
1.47 +
1.48 + Container container;
1.49 +}
1.50 +
1.51 +#endif