3434#ifndef GECODE_FLATZINC_SYMBOLTABLE_HH
3535#define GECODE_FLATZINC_SYMBOLTABLE_HH
3636
37- #include < vector>
38-
39- #ifdef GECODE_HAS_UNORDERED_MAP
4037#include < unordered_map>
41- #elif defined(GECODE_HAS_GNU_HASH_MAP)
42- #include < ext/hash_map>
43- #else
44- #include < map>
45- #endif
38+ #include < vector>
4639
4740namespace Gecode { namespace FlatZinc {
4841
4942 // / Symbol table mapping identifiers (strings) to values
5043 template <class Val >
5144 class SymbolTable {
5245 private:
53- #ifdef GECODE_HAS_UNORDERED_MAP
54- typedef std::unordered_map<std::string,Val> mymap;
55- #elif defined(GECODE_HAS_GNU_HASH_MAP)
56- class hashString {
57- public:
58- size_t operator ()(const std::string& x) const {
59- return __gnu_cxx::hash<const char *>()(x.c_str ());
60- }
61- };
62- typedef __gnu_cxx::hash_map<std::string,Val,hashString> mymap;
63- #else
64- typedef std::map<std::string,Val> mymap;
65- #endif
66- mymap m;
46+ std::unordered_map<std::string,Val> m;
6747 public:
6848 // / Insert \a val with \a key
6949 bool put (const std::string& key, const Val& val);
@@ -74,7 +54,7 @@ namespace Gecode { namespace FlatZinc {
7454 template <class Val >
7555 bool
7656 SymbolTable<Val>::put(const std::string& key, const Val& val) {
77- typename mymap::const_iterator i = m.find (key);
57+ const auto & i = m.find (key);
7858 bool fresh = (i == m.end ());
7959 m[key] = val;
8060 return fresh;
@@ -83,7 +63,7 @@ namespace Gecode { namespace FlatZinc {
8363 template <class Val >
8464 bool
8565 SymbolTable<Val>::get(const std::string& key, Val& val) const {
86- typename mymap::const_iterator i = m.find (key);
66+ const auto & i = m.find (key);
8767 if (i == m.end ())
8868 return false ;
8969 val = i->second ;
0 commit comments