#include"hash.h"
namespace pc
{
template<class K,class V,class Hash=HashFunc<K>>
class unordered_map
{
public:
struct MapCompare
{
const K& operator()(const pair<const K,V>& kv)
{
return kv.first;
}
};
//当 typedef 声明的是一个类中的 类型成员 而不是数据成员时,需要 typename 修饰声明的类型成员:
typedef typename HashTable<K, pair<const K, V>, MapCompare, Hash>::Iterator iterator;
typedef typename HashTable<K, pair<const K, V>, MapCompare, Hash>::ConstIterator const_iterator;
iterator begin()
{
return _ht.Begin();
}
iterator end()
{
return _ht.End();
}
const_iterator begin() const
{
return _ht.Begin();
}
const_iterator end() const
{
return _ht.End();
}
pair<iterator, bool> insert(const pair<const K, V>& kv)
{
return _ht.Insert(kv);
}
iterator Find(const K& key)
{
return _ht.Find(key);
}
bool Erase(const K& key)
{
return _ht.Erase(key);
}
V& operator[](const K& key)
{
pair<iterator, bool> ret = _ht.Insert(make_pair(key, V()));
return ret.first->second;
}
private:
HashTable<K, pair<const K, V>, MapCompare,Hash> _ht;
};
}
#include"hash.h"
namespace pc
{
template<class K,class V,class Hash=HashFunc<K>>
class unordered_map
{
public:
struct MapCompare
{
const K& operator()(const pair<const K,V>& kv)
{
return kv.first;
}
};
//当 typedef 声明的是一个类中的 类型成员 而不是数据成员时,需要 typename 修饰声明的类型成员:
typedef typename HashTable<K, pair<const K, V>, MapCompare, Hash>::Iterator iterator;
typedef typename HashTable<K, pair<const K, V>, MapCompare, Hash>::ConstIterator const_iterator;
iterator begin()
{
return _ht.Begin();
}
iterator end()
{
return _ht.End();
}
const_iterator begin() const
{
return _ht.Begin();
}
const_iterator end() const
{
return _ht.End();
}
pair<iterator, bool> insert(const pair<const K, V>& kv)
{
return _ht.Insert(kv);
}
iterator Find(const K& key)
{
return _ht.Find(key);
}
bool Erase(const K& key)
{
return _ht.Erase(key);
}
V& operator[](const K& key)
{
pair<iterator, bool> ret = _ht.Insert(make_pair(key, V()));
return ret.first->second;
}
private:
HashTable<K, pair<const K, V>, MapCompare,Hash> _ht;
};
}
#include"hash.h"
namespace pc
{
template<class K,class V,class Hash=HashFunc<K>>
class unordered_map
{
public:
struct MapCompare
{
const K& operator()(const pair<const K,V>& kv)
{
return kv.first;
}
};
//当 typedef 声明的是一个类中的 类型成员 而不是数据成员时,需要 typename 修饰声明的类型成员:
typedef typename HashTable<K, pair<const K, V>, MapCompare, Hash>::Iterator iterator;
typedef typename HashTable<K, pair<const K, V>, MapCompare, Hash>::ConstIterator const_iterator;
iterator begin()
{
return _ht.Begin();
}
iterator end()
{
return _ht.End();
}
const_iterator begin() const
{
return _ht.Begin();
}
const_iterator end() const
{
return _ht.End();
}
pair<iterator, bool> insert(const pair<const K, V>& kv)
{
return _ht.Insert(kv);
}
iterator Find(const K& key)
{
return _ht.Find(key);
}
bool Erase(const K& key)
{
return _ht.Erase(key);
}
V& operator[](const K& key)
{
pair<iterator, bool> ret = _ht.Insert(make_pair(key, V()));
return ret.first->second;
}
private:
HashTable<K, pair<const K, V>, MapCompare,Hash> _ht;
};
}