map和set的区别及hash表
1. map和set都是关联容器,其底层实现都是红黑树。
2. map是映射,其中元素是键-值对,关键字起到索引作用,值表示与索引相关联的数值,set是集合每个元素只包含一个关键字。
3. set的迭代器是sonst的,不允许修改元素的值,map允许修改value不许修改key值。map和set都是有序的。
hash表一般用来判断一个元素是否在集合里出现,复杂度位O(1)
元素通过哈希函数映射到哈希表中,若出现哈希碰撞,解决方法一般有两种:拉链法,使用链表;线性探测法,使用较大的哈希表size来存储datasize,提前预留出空位
常见的三种哈希结构:数组、set、map
确定某一元素是否在某个集合中,用hash表更好,复杂度更低。
什么时候用数组来做哈希的题目:元素数值大小有限制的时候
什么时候用set来做哈希的题目:输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的, 同时可以不考虑输出结果的顺序
什么时候用map来做哈希的题目:输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的, 同时考虑输出结果的顺序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通