位图(bitset)和布隆过滤器

位图将数字映射到比特位上,用0,1来表示数据存在与否。

适用场景:大量数据(2^32次方约为40亿数据,0.5GB),判断存在与否。

template<size_t N>
class Bitset
{
public:Bitset(){// 在x86下size_t表示四个字节,32个比特位_bt.resize(N/32+1);}// set方法设置x对应比特位为0void set(size_t x){size_t i=x / 32;size_t j = x % 32;_bt[i] |= (1 << j);}// reset方法设置x对应比特位为1void reset(size_t x){size_t i = x / 32;size_t j = x % 32;_bt[i] &= ~(1 << j);}// 判断是否存在bool test(size_t x){size_t i = x / 32;size_t j = x % 32;return _bt[i] & (1 << j);}
private:vector<size_t> _bt;
};

位图可以通过按位与和或操作来实现比特位的控制

值得注意的是,数据在vs上可以为这样储存。但不影响移位。

两个位图:从存不存在,可以少量统计存在次数,两个比特位有四种形式。

template<size_t N>
class TwoBitset
{
public:TwoBitset(){}// 当数据存在设成01,出现两次设成10,void set(size_t x){if (!bs1.test(x)&&!bs2.test(x)){bs1.set(x);}else if (bs1.test(x) && !bs2.test(x)){bs2.set(x);}else{;}}void reset(size_t x){bs1.reset(x);bs2.reset(x);}bool test(size_t x){return bs1.test(x) && bs2.test(x);}
private:Bitset<-1> bs1;Bitset<-1> bs2;
};

布隆过滤器:就是一个值映射多个值,一对多的关系。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/221823.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

accelerate的使用说明

1 多卡(GPU)使用方法 终端输入指令&#xff0c;生成问答页面 accelerate config 这个方法也是可以的 2 后面修改直接找到这个yaml文件进行修改即可 cd ~/.cache/huggingface/accelerate vim default_config.yaml 进入vim进行修改 3 单卡(GPU)使用方法 vim default_config.…

介绍比特币上的 sCrypt 开发平台

最强大的基础设施和工具套件&#xff0c;可轻松构建和扩展您的 dApp 杀手级应用在哪里&#xff1f; 尽管比特币在小额支付、国际汇款和供应链管理等广泛用例中具有颠覆性潜力&#xff0c;但在推出 14 年后&#xff0c;我们还没有看到一款非常受欢迎并被主流采用的杀手级应用。 …

在 Banana Pi BPI-R2 PRO RK3568开源路由器上安装 OpenWrt 23 快照固件

这是在 BPI-R2 Pro&#xff08;到内部 eMMC&#xff09;上安装 OpenWrt 23 快照固件的快速指南。该固件已预装 LuCI 和一些软件包。这是 2023 年 9 月 2 日的屏幕截图。 LuCI 主页概述。Linux内核是6.1.50 网络接口概述。PPPoE 连接已启动并正在运行 速度测试和 CPU 使用情况…

Star History 十月开源精选 |AI for Postgres

在 2023 年 Stack Overflow 开发者调查中&#xff0c;Postgres 顶替了 MySQL 被评为最受欢迎的数据库。一个重要因素应该是 Postgres 支持扩展&#xff1a;可扩展的架构 Postgres 仍然由社区拥有&#xff0c;Postgres 生态近年来蓬勃发展。 扩展可以看作是内置功能&#xff0c…

浅谈联网汽车安全漏洞

“智能网联汽车存在内生共性问题&#xff0c;即软硬件的漏洞后门&#xff0c;基于此进行的网络攻击可以直接带来勒索、盗窃、大规模车辆恶意操控风险&#xff0c;还有数据泄露等网络安全事件。如果内生的漏洞后门问题不解决&#xff0c;系统自身难保&#xff0c;很难谈系统安全…

C语言基础篇5:指针(二)

接上篇&#xff1a;C语言基础篇5&#xff1a;指针(一) 4 指针作为函数参数 4.1 指针变量作为函数的参数 指针型变量可以作为函数的参数&#xff0c;使用指针作为函数的参数是将函数的参数声明为一个指针&#xff0c;前面提到当数组作为函数的实参时&#xff0c;值传递数组的地址…

blender 3D眼球结构

角膜&#xff08;Cornea&#xff09;&#xff1a;眼球的前部&#xff0c;透明的曲面&#xff0c;负责折射光线。虹膜&#xff08;Iris&#xff09;&#xff1a;眼睛的颜色部分&#xff0c;控制瞳孔大小以调整进入眼睛的光量。瞳孔&#xff08;Pupil&#xff09;&#xff1a;虹膜…

Chatbot开发三剑客:LLAMA、LangChain和Python

聊天机器人&#xff08;Chatbot&#xff09;开发是一项充满挑战的复杂任务&#xff0c;需要综合运用多种技术和工具。在这一领域中&#xff0c;LLAMA、LangChain和Python的联合形成了一个强大的组合&#xff0c;为Chatbot的设计和实现提供了卓越支持。 首先&#xff0c;LLAMA是…

多货币转换多语言切换的跨境电商源码,实现全球购物的自由流通

WoShop跨境电商源码 在全球经济一体化的今天&#xff0c;跨境电商的发展日益蓬勃。为了满足不同国家和地区用户的购物需求&#xff0c;我们开发了一款多货币转换多语言切换的跨境电商源码&#xff0c;实现全球购物的自由流通。 一、多货币转换 在跨境电商交易中&#xff0c;货币…

数据结构与算法编程题25

复制二叉树 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }BiTNode, …

程序员利用空闲时间接私活,如何做才能长远发展?

很多程序员上班一般都是一个项目做个两周到一个月&#xff0c;除了是自己全权负责的项目要实时跟进外&#xff0c;很多时候都是项目中的一员&#xff0c;只要完成了自己负责的部分&#xff0c;就会有蛮多的业余时间。 这些业余时间&#xff0c;空闲也是空闲&#xff0c;很多程…

都2023年了,为什么大家还都在吹捧 Python?

2023 年&#xff0c;Python 还可学吗&#xff1f; 答案当然是可。 近些年间&#xff0c;Python 的火热有目共睹&#xff0c;作为一种功能强大的高级编程语言&#xff0c;在 2018 年的时候它的流行程度就得到了大幅提高。 图源&#xff1a;Stack Overflow 网站编程语言浏览量统…