// © Copyright 1997. Joseph Bergin. All rights reserved.#ifndef SET_HASH_H#define SET_HASH_H#include "hashtable.h"template <class KEY, class HASHER, class EQUAL>class set_hash{public:	typedef hash_table<KEY, HASHER, EQUAL>::const_iterator iterator;	// bidirectional const iterator	typedef KEY key_type;	typedef KEY value_type;	typedef HASHER hash_type;	typedef EQUAL equal_type;		set_hash(): rep(){}		hash_type hash_function(){return rep.hash_function();}	equal_type comparer(){return rep.comparer();}		iterator insert (key_type t)	{	pair<rep_type::iterator, bool> where = rep.find(t);		if(!where.second)			return rep.insert(t);		return where.first;	}		int erase(key_type t)	{	return rep.erase(t);	}		iterator find(const key_type& k) const	{	pair<iterator, bool> where = rep.find(k);		if(where.second) return where.first;		return end();	}	iterator begin()const{ return rep.begin();}	iterator end()const{return rep.end();}    bool empty() const { return rep.empty();}    int size()const{return rep.size();}protected:	typedef hash_table<key_type, HASHER, EQUAL> rep_type;	rep_type rep;};#endif