unordered-set-map/Linux/Unordered_Set.hpp

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;
};
}