引言
在C++标准模板库(STL)中,bitset
是一种用于表示固定大小序列的位集合的容器。每个位(bit)可以被独立地设置或清除,即它可以单独地表示0或1。bitset
在处理二进制数据时非常有用,尤其是在需要节省空间或者进行位操作时。
可以看到模板参数采用的是非类型模板参数,其大小一开始就确定好了。头文件再bitset中
以下是bitset
的一些基本特性:
基本特性
- 固定大小:bitset的大小在编译时确定,不能动态改变。
- 高效存储:bitset以一个固定大小的unsigned long类型数组的形式存储位,这样可以节省内存空间。
- 易于操作:bitset提供了简单的接口来设置、清除、翻转和查询位的状态。
- 位运算:支持位与(&)、位或(|)、位异或(^)、位取反(~)等位运算。
接口函数
这是bitset的核心接口
重点是set reset test
set:将某一位set为1
reset:设置为0
test:检查是否为1
剩余的接口
分别对应
解引用
统计有几位被set
返回大小(开局就被设置好)
是否存在1
是否都不是1
是否都是1
flip:将某一位反转
注意事项
- bitset的大小必须在编译时已知,因此不能使用变量来定义bitset的大小。
- bitset的大小最大为
std::bitset<N>::npos
,通常这个值是unsigned long
能表示的最大值。
用途:
1.bitset在处理位数较少的位操作时非常有用,它简化了代码并提高了效率。
2.用于大量整型家族数据的查找操作。