本文主要是介绍从零开始手写STL库:unordered_set,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从零开始手写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的特性了
这篇关于从零开始手写STL库:unordered_set的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!