STL的位图:bitset

引言

在C++标准模板库(STL)中,bitset是一种用于表示固定大小序列的位集合的容器。每个位(bit)可以被独立地设置或清除,即它可以单独地表示0或1。bitset在处理二进制数据时非常有用,尤其是在需要节省空间或者进行位操作时。

可以看到模板参数采用的是非类型模板参数,其大小一开始就确定好了。头文件再bitset中

以下是bitset的一些基本特性:

基本特性

  1. 固定大小:bitset的大小在编译时确定,不能动态改变。
  2. 高效存储:bitset以一个固定大小的unsigned long类型数组的形式存储位,这样可以节省内存空间。
  3. 易于操作:bitset提供了简单的接口来设置、清除、翻转和查询位的状态。
  4. 位运算:支持位与(&)、位或(|)、位异或(^)、位取反(~)等位运算。

接口函数

这是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.用于大量整型家族数据的查找操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值