COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/deba/pac_map_factory.h @ 640:d426dca0aaf7

Last change on this file since 640:d426dca0aaf7 was 595:e10b5e9419ef, checked in by Balazs Dezso, 21 years ago
File size: 1.2 KB
Line 
1#ifndef PAC_MAP_FACTORY_H
2#define PAC_MAP_FACTORY_H
3
4#include "map_base.h"
5
6/**
7        Converter class to use the standard template
8        libary's pair associative containers as a graph map.
9*/
10
11namespace hugo {
12       
13        template <typename G, typename K, typename KIt, template <typename, typename> class PAC>
14        class PacMapFactory {
15       
16       
17        public:
18               
19                typedef G Graph;
20                typedef K Key;
21                typedef KIt KeyIt;
22               
23                template <typename V>
24                class Map : public MapBase<G, K, KIt> {
25                public:
26                        typedef V Value;
27       
28                        Map() {}
29                       
30                        Map(Graph& g, MapRegistry<G, K, KIt>& r)
31                                : MapBase<G, K, KIt>(g, r) {
32                                init();
33                        }
34                               
35                        virtual ~Map() {
36                                destroy();
37                        }
38       
39       
40                        V& operator[](const K& key) {
41                                return container.find(key)->second;
42                        }
43               
44                        const V& operator[](const K& key) const {
45                                return container.find(key)->second;
46                        }
47       
48                        const V& get(const K& key) const {
49                                return container.find(key)->second;
50                        }
51               
52                        void set(const K& key, const V& value) {
53                                container.find(key)->second = value;
54                        }
55               
56                        void add(const K& key) {
57                                container.insert(key);
58                        }
59               
60                        void erase(const K& key) {
61                                container.erase(key);
62                        }
63       
64                private:
65                        typedef PAC<K, V> Container;
66               
67                        Container container;
68                };
69               
70        };
71}
72
73#endif
Note: See TracBrowser for help on using the repository browser.