算法竞赛STL:bitset使用方法

STL-bitset使用方法

文章目录

容器描述
bitset是一种特殊的数组,它的每一个元素只能是0或1。每个元素只占用1bit空间,所以它是一种空间效率极高的数据结构。bitset在处理大量的位级数据时非常有用。

使用方法
首先,你需要包含头文件#include <bitset>,然后声明一个bitset对象,如std::bitset<10> b;。这将创建一个可以存储10位的bitset

底层实现
bitset的底层实现通常是一个或多个unsigned long类型的数组。每个unsigned long可以存储多个位,具体取决于系统中unsigned long的大小。例如,在一个32位系统中,一个unsigned long可以存储32个位。

支持操作

操作名效果传入参数操作返回值
set()将所有位设置为1返回bitset引用
set(size_t pos, bool val = true)将指定位设置为valpos: 位的位置,val: 要设置的值返回bitset引用
reset()将所有位设置为0返回bitset引用
reset(size_t pos)将指定位设置为0pos: 位的位置返回bitset引用
flip()翻转所有位返回bitset引用
flip(size_t pos)翻转指定位pos: 位的位置返回bitset引用
operator[]访问指定位pos: 位的位置返回指定位的引用
count()返回1的数量返回1的数量
size()返回位的数量返回位的数量
test(size_t pos)检查指定位是否为1pos: 位的位置如果指定位为1,返回true;否则,返回false
any()检查是否有位为1如果有位为1,返回true;否则,返回false
none()检查是否没有位为1如果没有位为1,返回true;否则,返回false

常用示例

#include <bitset>
#include <iostream>

int main() {
    std::bitset<8> b;
    b.set(1);
    b.flip(2);
    std::cout << "b = " << b << std::endl;
    std::cout << "b[1] = " << b[1] << std::endl;
    std::cout << "b.count() = " << b.count() << std::endl;
    return 0;
}

经常产生的问题

  1. bitset的大小在编译时需要确定,不能在运行时动态改变。
  2. bitset不支持迭代器。
  3. 如果需要处理的位数超过了bitset的大小,会抛出std::out_of_range异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若亦_Royi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值