bitset粗略用法

  1. 赛中一直在想怎么找到两个点的公共点,没想到bitset还可以直接&一下在count一下直接出来了,抓紧研究下bitset
bitset可以近乎为只存 10的数组,和普通数组相比时间复杂度优异。
普通数组count之类的数组要n的时间复杂度,bitset只要n/32. 空间也与字符型相同一个元素只占一个字节。
在数的意义上就是比较直观二进制串, 可以直接进行位运算。
头文件: #include<bitset>
bitset<N> bt1, bt2, bt; // 定义, N 为bitset长度。
位运算都可以用: 与、或、非、异或,左移,右移
bt1&bt2
bt1|bt2
~bt1
bt1^bt2
bt1<<=2
bt1>>=2
bt.size() 返回大小(位数)
bt.count() 返回1的个数
bt.any() 返回是否有1
bt.none() 返回是否没有1
bt.set() 全都变成1
bt.set(p) 将第p + 1位变成1
bt.set(p, x) 将第p + 1位变成x
bt.reset() 全都变成0
bt.reset(p) 将第p + 1位变成0
bt.flip() 全都取反
bt.flip(p) 将第p + 1位取反
bt.to_ulong() 返回它转换为unsigned long的结果,如果超出范围则报错
bt.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
bt.to_string() 返回它转换为string的结果

posted @   N再再  阅读(31)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示