empty():检查集合是否为空
发布时间:2025-06-24 20:31:13 作者:北方职教升学中心 阅读量:959
哈希表的查找效率通常是常数时间复杂度 O(1),但最坏情况下是 O(n)。插入的元素是唯一的,如果尝试插入重复元素,unordered_set
会忽略它。
unordered_set
底层是使用哈希桶
实现的,查找的效率为O(1)
;但是数据不再有序,所以取名为unordered_set
。它们与 set
和 map
的主要区别在于,它们使用 哈希表作为底层数据结构,因此它们的元素并不是按照某种顺序存储的,而是根据元素的哈希值存储。3. unordered_map
的基本用法
unordered_map
是一个哈希表实现的键值对容器,类似于 map
,但是它的元素不按键排序。
4. 性能分析
这一部分,我们要学习底层哈希表以后才会深入理解;这里简单说一下
底层的哈希表使用的是哈希桶
结构(就是顺序表中存储链表,这样可以避免冲突的问题)。
2.3 unordered_set
和set
的区别
通过查看文档已经使用unoedered_set
,我们可以发现unordered_set
和set
支持的增删查改是一模一样的,我们现在就来看一下它们有什么不同:
- 首先
set
的底层是红黑树
,而unordered_set
底层是哈希表。常用操作包括插入元素、- erase():删除指定键值对。
unordered_set
底层存储数据的内存都是从空间适配器中申请的,如果自己有需求实现内存池,要传给第四个模版参数- 一般我们在使用的时候不需要传后三个模版参数。
- 其次它们对于
key
的要求不同,set
要求key
支持比较;而unoedered_set
要求key
支持转化成整型且要支持比较。这里对于其他的函数,就需要去了解它底层的
哈希桶
结构了,在实现哈希
结构时再去深入探究。插入和删除操作平均时间复杂度为 O(1)。6.
unordered_multimap
和unordered_multiset
unordered_multimap
/unordered_multiset
和multimap
/multiset
功能完全类似,支持key
冗余这里就不过多描述了,有需要了解的可以参考一下之前的文章讲解:
【map与set】—— 我与C++的不解之缘(二十二)
到这里本篇文章内容就结束了,感谢各位的支持!!!
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws