70 lines
1.3 KiB
C++
70 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "HashTable.hpp"
|
|
|
|
namespace Lenyiin
|
|
{
|
|
template <class K, class Hash = _Hash<K>>
|
|
class Unordered_Set
|
|
{
|
|
public:
|
|
struct SetKOfT
|
|
{
|
|
const K &operator()(const K &key)
|
|
{
|
|
return key;
|
|
}
|
|
};
|
|
|
|
typedef typename Open_HashTable<K, K, SetKOfT, Hash>::iterator iterator;
|
|
|
|
iterator begin()
|
|
{
|
|
return _hashTable.begin();
|
|
}
|
|
|
|
iterator end()
|
|
{
|
|
return _hashTable.end();
|
|
}
|
|
|
|
// 构造函数: 指定哈希表的初始大小
|
|
Unordered_Set(size_t bucket_count = 10)
|
|
: _hashTable(bucket_count)
|
|
{
|
|
}
|
|
|
|
// 析构
|
|
~Unordered_Set()
|
|
{
|
|
}
|
|
|
|
// 插入元素
|
|
std::pair<iterator, bool> Insert(const K &key)
|
|
{
|
|
return _hashTable.Insert(key);
|
|
}
|
|
|
|
// 查找元素
|
|
bool Find(const K &key)
|
|
{
|
|
return _hashTable.Find(key);
|
|
}
|
|
|
|
// 删除元素
|
|
bool Erase(const K &key)
|
|
{
|
|
return _hashTable.Erase(key);
|
|
}
|
|
|
|
// 打印
|
|
void Print() const
|
|
{
|
|
_hashTable.Print();
|
|
}
|
|
|
|
private:
|
|
// 使用哈希表作为底层数据结构
|
|
Open_HashTable<K, K, SetKOfT, Hash> _hashTable;
|
|
};
|
|
} |