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来做哈希的题目:输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的, 同时考虑输出结果的顺序

posted @ 2022-07-09 14:25  Ada_CN  阅读(215)  评论(0编辑  收藏  举报