23#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
24#include <unordered_map>
25#elif defined(__INTEL_COMPILER)
26#include <ext/hash_map>
27#elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 3)
28#include <tr1/unordered_map>
29#elif defined(__GNUC__) && __GNUC__ >= 3
30#include <ext/hash_map>
31#elif defined(_MSC_VER) && ( ( _MSC_VER >= 1500 && _HAS_TR1 ) || ( _MSC_VER >= 1600 ) )
32#include <unordered_map>
48#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
51#elif defined(_STLPORT_VERSION)
52#define unordered_map hash_map
53namespace std {
using std::hash_map; }
55#elif defined(_MSC_VER) && _MSC_VER >= 1600
58#elif defined(_MSC_VER) && _MSC_VER >= 1500 && _HAS_TR1
59#define _ZFT_zfstlhash std::tr1::hash
60#define _ZFT_zfstlequalto std::tr1::equal_to
61namespace std {
using std::tr1::unordered_map; }
63#elif defined(_MSC_VER) && _MSC_VER >= 1300
64#define unordered_map hash_map
65#define _ZFT_zfstlhash stdext::hash
66#define _ZFT_zfstlequalto stdext::equal_to
67namespace std {
using stdext::hash_map; }
69#elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 3)
70#define _ZFT_zfstlhash std::tr1::hash
71#define _ZFT_zfstlequalto std::tr1::equal_to
72namespace std {
using std::tr1::unordered_map; }
74#elif (defined(__GNUC__) && __GNUC__ >= 3) || defined(__INTEL_COMPILER)
76#define unordered_map hash_map
77#define _ZFT_zfstlhash __gnu_cxx::hash
78#define _ZFT_zfstlequalto std::equal_to
79namespace std {
using __gnu_cxx::hash_map; }
82 template<>
struct hash<unsigned long long> {
83 size_t operator()(
const unsigned long long &__x)
const {
87 template<
typename T>
struct hash<T *> {
88 size_t operator()(T *
const &__x)
const {
92 template<>
struct hash<std::string> {
93 size_t operator()(
const std::string &__x)
const {
94 return hash<const char *>()(__x.c_str());
100#define unordered_map hash_map
101namespace std {
using std::hash_map; }