【C++】STL之哈希的应用

news/2024/11/14 23:43:16/

哈希的应用

  • STL中的unordered系列
    • unordered_map
  • 位图
  • 布隆过滤器
  • 海量数据面试题

STL中的unordered系列

c++11中提出的unordered系列,其底层结构都是用哈希桶实现的。

unordered_map

构造

函数申明功能介绍
可以使用迭代器构造,也可以使用拷贝构造,或者是初始化列表进行构造

容量

函数声明功能介绍
bool empty() const检测unordered_map是否为空
size_t size() const获取unordered_map的有效元素个数

迭代器

函数声明功能介绍
begin()返回unordered_map第一个元素的迭代器
end()返回unordered_map最后一个元素的下一个位置的迭代器
cbegin()返回unordered_map第一个元素的const迭代器
cend()返回unordered_map最后一个元素的下一个位置的const迭代器

元素访问

函数声明功能介绍
operator[]返回与key对应的value,没有的话则插入失败

注意:该函数中实际调用哈希桶的插入操作,用参数key与V()构造一个默认值往底层哈希桶中插入,如果key不在哈希桶中,插入成功,返回V(),插入失败,说明key已经在哈希桶中,将key对应的value返回。

查询

函数声明功能介绍
iterator find(const K& key)返回的是迭代器,返回key在哈希桶中的位置
size_t count(const K& key)返回的是key在哈希桶中的个数

修改

函数声明功能介绍
insert向容器中插入键值对
erase删除容器中的键值对
void clear()清空容器中有效元素
void swap(unordered_map&)交换两个容器中的元素

桶的操作

函数声明功能介绍
size_t bucket_count()const返回哈希桶中桶的个数
size_t bucket_size(size_t n)const返回n号桶中有效元素的个数

位图

位图就是用每一个比特位来存放某种状态,使用于海量数据,和数据无重复的场景。通常用来判断某个数据是否存在的。
位图的应用:
1.快速查找某个数据是否在一个集合中
2.排序+去重
3.求两个数据的交集、并集
4.操作系统中磁盘块的标记

面试题:
1.给定100亿个整数,设计算法找到只出现一次的整数?
2.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?
3.位图应用变形:1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数

布隆过滤器

海量数据面试题


http://www.ppmy.cn/news/692807.html

相关文章

森海塞尔重磅推出TC Bars智能音视频一体机, 为中小型协作空间缔造理想解决方案

森海塞尔重磅推出TC Bars智能音视频一体机, 为中小型协作空间缔造理想解决方案 全球音频行业先驱森海塞尔重磅推出首款内置摄像头的可扩展一体化会议设备 德国韦德马克,2023年6月13日——森海塞尔作为先进音频技术的首选,致力于使协作与学习…

三星手机电池循环清零代码_数据结构(C语言)-循环队列基本操作

队列是一种先进先出(first in first out,FIFO)的线性表,是一种常用的数据结构。 它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样&…

apple苹果产品国行和港行的区别

【iPhone国行和港行的区别】国行:耳机只能用在苹果设备上,不能用其它设备。充电器不用转接,直接可以用,保修的时候如果换新了,重新计算一年保修期。国行是三网通用。港行:耳机可以用在任何设备上。充电器需…

ios获取手机序列号_iOS获取手机型号、iOS获取当前app的名称和版本号

//需要#import (NSString*)deviceModelName {structutsname systemInfo; uname(&systemInfo); NSString*deviceModel [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];if ([deviceModel isEqualToString:"iPhone3,1"]) return…

如何动手用js自己写一个分页?

实现效果 实现代码 function generateTableHead() {const tableHead document.getElementById(table-head);tableHead.innerHTML ;// 添加复选框列的表头const checkboxHead document.createElement(th);const checkbox document.createElement(input);checkbox.type che…

基于单片机智能洗衣机设计与实现

功能介绍 以51单片机作为主控系统;利用STC89C52单片机进行数据处理; 通过2路继电器分别控制洗衣机进水、出水相关逻辑运算;采用L298去掉直流电机实现滚筒正反转;通过单片机进行处理数据,把采集到的数据通过LCD液晶显示…

catia打开stp文件不是实体_Catia与Stp格式转换时居然有这么多技巧,你造吗?

STP作为一种常用的3D通用格式,经常会被用于数据的交换。CATIA软件提供了将产品转为STP格式的方法。 1)CATIA产品转STP格式的技巧:保留产品颜色 很多人在将产品转换成STP格式时,常常苦恼于产品颜色的丢失。于是,大家一定会问CATIA有…

stp文件转stl

什么是一 .stp 文件? STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件。它包含有关 3D 对象的信息,并以类似于STEP文件格式的方式保存。STP 文件根据STEP应用程序协议 ISO 10303-2xx 促进应用程序之间的数据交换。该 ISO 定义了 EX…