当前位置:   article > 正文

C++ 哈希_c++哈希

c++哈希

目录

1. unordered系列关联式容器

1.1 unordered_map

1.1.1 unordered_map的文档介绍

1.1.2 unordered_map的接口说明

1.2 unordered_set

1.3 例题

2. 底层结构

2.1 哈希概念  

2.2 哈希冲突

2.3 哈希函数

2.4 哈希冲突解决

2.4.1 闭散列

2.4.2 开散列

3. 模拟实现

3.1 哈希表的改造

1. 模板参数列表的改造

2. 增加迭代器操作

3. 增加通过key获取value操作

3.2 unordered_map

4. 哈希的应用

4.1 位图

4.1.1 位图概念

 4.1.2 位图的实现

4.1.3 位图的应用

4.2 布隆过滤器 

4.2.1 布隆过滤器提出

4.2.2布隆过滤器概念  

 4.2.3 布隆过滤器的插入

4.2.4 布隆过滤器的查找

 4.2.5 布隆过滤器删除

4.2.6 布隆过滤器优点 

4.2.7 布隆过滤器缺陷 

5. 海量数据面试题 

5.1 哈希切割

5.2 位图应用

5.3 布隆过滤器


1. unordered系列关联式容器

C++98 中, STL 提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 $log_2N$,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11 中, STL 又提供了 4 个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对unordered_map unordered_set 进行介绍,unordered_multimap和 unordered_multiset 可查看文档介绍

1.1 unordered_map

1.1.1 unordered_map的文档介绍

1. unordered_map 是存储 <key, value> 键值对的关联式容器,其允许通过 keys 快速的索引到与其对应的value
2. unordered_map 中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此
键关联。键和映射值的类型可能不同。
3. 在内部 ,unordered_map 没有对 <kye, value> 按照任何特定的顺序排序 , 为了能在常数范围内找到key 所对应的 value unordered_map 将相同哈希值的键值对放在相同的桶中。
4. unordered_map 容器通过 key 访问单个元素要比 map 快,但它通常在遍历元素子集的范围迭代方面效率较低。
5. unordered_maps 实现了直接访问操作符 (operator[]) ,它允许使用 key 作为参数直接访问
value
6. 它的迭代器至少是前向迭代器。

1.1.2 unordered_map的接口说明

1. unordered_map 的构造
函数声明 功能
unordered_map::unordered_map - C++ Reference
构造不同格式的 unordered_map 对象
2. unordered_map 的容量
函数声明 功能
bool empty() const
检测 unordered_map 是否为空
size_t size() const
获取 unordered_map 的有效元素个数
3. unordered_map 的迭代器
函数声明 功能
unordered_map::begin - C++ Reference
返回 unordered_map 第一个元素的迭代器
unordered_map::end - C++ Reference
返回 unordered_map 最后一个元素下一个位置的迭代器
unordered_map::cbegin - C++ Reference
返回 unordered_map 第一个元素的 const 迭代器
unordered_map::cend - C++ Reference
返回 unordered_map 最后一个元素下一个位置的 const 迭代器
4. unordered_map 的元素访问
函数声明 功能
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/490280
推荐阅读
相关标签
  

闽ICP备14008679号