bitset 学习笔记

bitset 有点厉害,必须要学了。

介绍

bitset 可以看成是一个每个位置都是 01 的 bool 数组。与 bool 数组相比,它的空间复杂度是其 132,时间复杂度也是 132,还支持位运算,所以不论是用处还是效率基本薄纱了 bool 数组。

可以作为卡常、压位操作、记录状态时使用。

1. 使用方法

std::bitset<N> a; //开一个长度为 N 的一维 bitset
a |= (1 << i); //可以单独作为一个数进行位运算
if(a[i]) //也可以作为数组直接访问下标

2 内置函数

复杂度 O(1) 的函数:

a.set():全部赋值为 1

a.set(x):把指定第 x 位赋值为 1

a.reset():全部赋值为 1

a.reset(x):把指定第 x 位赋值为 0

a.flip():全部位置取反。

a.flip(x):把指定第 x 位取反。

复杂度 O(nw) 的函数:

a.any() 判断数组中是否有 1

a.count() 数组中 1 的个数。

a._Find_first():查找从下标 0 开始第一个 1 出现的位置,如果没有返回数组大小。

a._Find_next(x):查找从下标 x+1 开始第一个 1 出现的位置,如果没有返回数组大小。

习题

不想写...

posted @   Fire_Raku  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示