1.知识点
无序关联式容器:底层实现使用哈希表。无序关联式容器中的元素没有顺序,针对于自定义类型需要自己定义std::hash函数与std::equal_to函数
1.unordered_set
//1、key值是唯一的,不能重复
//2、key值是没有顺序的
2.unordered_multiset
//1、key值是不唯一的,可以重复
//2、key值是没有顺序的
3.unordered_map
//1、key值是唯一的,不能重复
//2、key值是没有顺序的
4.unordered_multimap
//unordered_multimap特点
//1、key值是不唯一的,可以重复
//2、key值是没有顺序的注意点:
ps:针对内置类型,初始化、遍历、查找、插入、删除、修改、下标访问这些与关联式容器类似,无序关联式容器中元素没有顺序,底层采用的是哈希表。特别是:对于自定义类型而言,没有针对key值对应的哈希函数以及比较函数,所以需要自己写。
2.哈希表
1.哈希函数:根据key值找到key对应的存储位置
2.哈希函数构造:直接定址、平方取中、数字分析、除留余数
3
本文介绍了C++中的无序关联式容器unordered_set和unordered_map,它们基于哈希表实现,元素无顺序。自定义类型需要自定义std::hash和std::equal_to函数。讨论了哈希函数的设计,包括哈希冲突的解决方法,以及无序关联式容器的类模板。同时展示了如何为自定义类型Point实现哈希和键值对比函数。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



