map和set的区别及hash表

1. mapset都是关联容器,其底层实现都是红黑树。
2. map是映射,其中元素是键-值对,关键字起到索引作用,值表示与索引相关联的数值,set是集合每个元素只包含一个关键字。
    3. set的迭代器是sonst的,不允许修改元素的值,map允许修改value不许修改key值。mapset都是有序的。

hash表一般用来判断一个元素是否在集合里出现,复杂度位O(1)
元素通过哈希函数映射到哈希表中,若出现哈希碰撞,解决方法一般有两种:拉链法,使用链表;线性探测法,使用较大的哈希表size来存储datasize,提前预留出空位

常见的三种哈希结构:数组、set、map

确定某一元素是否在某个集合中,用hash表更好,复杂度更低。
什么时候用数组来做哈希的题目:元素数值大小有限制的时候
什么时候用set来做哈希的题目:输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的, 同时可以不考虑输出结果的顺序
什么时候用map来做哈希的题目:输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的, 同时考虑输出结果的顺序

posted @   Ada_CN  阅读(311)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示