bitset的模拟与实现/位运算哈希/位图


由来 :数据是否在给定的整形数据中,结果是在或者不在 ,刚好是两种状态,那么可以使用一

二进制比特位 来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0
代表不存在

cpp 复制代码
template<size_t N>
class bitset
{
public:
//除32是因为整形的比特位有32位
	bitset()
	{
		_bits.resize(N / 32 + 1);
	}
	void set(size_t x)
	{
		int i = x / 32;
		int j = x % 32;
		_bits[i] |= (1 << j);
	}
	void reset(size_t x)
	{
		int i = x / 32;
		int j = x % 32;
		_bits[i] &= ~(1 << j);
	}
	bool test(size_t x)
	{
		int i = x / 32;
		int j = x % 32;
		return _bits[i] & (1 << j);
	}
private:
	vector<int>_bits;
};

快速查找某个数据是否在一个集合中

排序 + 去重

求两个集合的交集、并集等

操作系统中磁盘块标记

不能计数
改进

cpp 复制代码
bitset<N>b1;
bitset<N>b2;

使用多个位图 去进行计算,以2个为例,代表两个二进制,就可以表示0 1 2 3个数,以此类推

相关推荐
梓䈑22 分钟前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先
Adios7943 小时前
设置交集大小至少为2
数据结构·算法·leetcode
流星白龙3 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
FrameNotWork7 小时前
HarmonyOS 6.0 文件加密与安全存储:从哈希到硬件级密钥管理全链路实战
安全·哈希算法·harmonyos
来一碗刘肉面9 小时前
栈的应用(表达式求值)
数据结构·算法
xiaowang1234shs10 小时前
怪兽轻断食技术深度测评:从断食计时引擎到AI识别算法的工程实践解析
数据库·人工智能·算法·macos·机器学习·p2p·visual studio
小果因子实验室10 小时前
量化研究--策略迁移算法1研究
算法
Web极客码11 小时前
如何用三段式确定性剪枝,为 LLM Agent 砍掉 35% 的 Token 成本?
服务器·人工智能·算法·机器学习
程序猿乐锅11 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode