从零开始手写STL库–unordered_set的实现
Gihub链接:miniSTL
一、unordered_set是什么
在STL中,std::unordered_set 是一个无序关联容器,其内部基于哈希表实现。
哈希表在本流程中已经实现过了,使用key来储存,储存内容为value,而unordered_set实际上就是一层封装
但是注意要把value屏蔽掉,因为set是一维的
二、unordered_set要包含什么函数
就是非常简单的封装,包含插入删除查找函数即可
template <typename Key> class Unordered_set
{
public:
Unordered_set() : hashtable(){};
~Unordered_set(){}
bool empty() const noexcept { return hashtable.size() == 0; }
size_t size() const noexcept { return hashtable.size(); }
void clear() noexcept { hashtable.clear(); }
void insert(Key key) { hashtable.insertKey(key); }
void erase(Key key) { hashtable.erase(key); }
bool find(const Key &key) { return hashtable.find(key) != nullptr; }
private:
myHashTable<Key, Key> hashtable;
};
总结
1、注意UnSet和Set的区别,在于底层实现不同,前者是哈希表,后者是红黑树
2、UnSet的搜索效率是O(1)面试真题,被问过了
其他就没什么要注意的了,了解哈希表就能说出来unordered_set的特性了