初识标准库bitset类型

对于要处理二进制位的有序集,每个位可能包含0或1值,我们可以用C++标准库中的bitset类型。

该类型的声明与vector等基本相同,不同的是vector定义时是存放的数据类型,而bitset存放的是大小,

例如:

bitset<32> bitvec;//32 bits,all zero

对其初始化有以下几种方法:

1.bitset<n> b;   //b有n位,每位都为0

 

2.bitset<n> b(u);   //b是unsigned long型u的一个副本

 

3.bitset<n> b(u);   //b是string对象s中含有的位串的副本

例:bitset<16> bitvec(0xffff);//bits 0.....15 are set to 1

 

4.bitset<n> b(s,pos,n); //b是s中从位置pos开始的n个位的副本

例:string str("1111111000000011001101");

       bitset<32> bitvec(str,5,4)  //4 bits starting at str[5],1100

 

5.bitset<n> b(s,pos);//b是s中pos开始一直到末尾的一个副本

例:string str("1111111000000011001101");

       bitset<32> bitvec(str,str.size-4)  //use last 4 characters 即1101,其余高位均为0

 

下面给出bitset对象上的操作

b.any()           b 中是否存在置为 1 的二进制位?
b.none()         b 中不存在置为 1 的二进制位吗?
b.count()        b 中置为 1 的二进制位的个数
b.size()          b 中二进制位的个数
b[pos]            访问 b 中在 pos 处二进制位
b.test(pos)     b 中在 pos 处的二进制位置为 1 么?
b.set()            把 b 中所有二进制位都置为 1
b.set(pos)      把 b 中在 pos 处的二进制位置为 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值