从零开始手写STL库–unordered_set的实现
Gihub链接:miniSTL
文章目录
- 从零开始手写STL库–unordered_set的实现
- 一、unordered_set是什么
- 二、unordered_set要包含什么函数
- 总结
一、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的特性了