bitset容器用法(附例题)

什么是bitset

bitset 是STL库中的二进制容器;

bitset就像一个bool类型的数组一样,但是有空间优化——bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一;

bitset有一个特性:整数类型和布尔数组都能转化成bitset;

bitset中的每个元素都能单独被访问,例如对于一个叫做foo的bitset,表达式foo[3]访问了它的第4个元素,就像数组一样;

bitset的大小在编译时就需要确定。如果你想要不确定长度的bitset,请使用(奇葩的)vector<bool>

使用方法

初始化bitset对象的方法

bitset<n> b;

bn位,每位都为0

bitset<nb(u);

bunsigned longu的一个副本

bitset<nb(s);

bstring对象s中含有的位串的副本

bitset<nb(sposn);

bs中从位置pos开始的n个位的副本

例:

bitset<5> bi;

这样就初始化了一个长度为5的变量名为bi的bitset。

赋值

bitset重载了[]运算符,故可以像bool数组那样赋值

bi[2] = 1;

这样就能把第三位赋值为1;


注意

bitset 高位在左,低位在右,使用时需注意。如下表

bi[4]bi[3]bi[2]bi[1]bi[0]
00100

常用函数

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
b.reset()    把b中所有二进制位都置为0
b.reset(pos) 把b中在pos处的二进制位置置为0
b.flip()     把b中所有二进制位逐位取反
b.flip(pos)  把b中在pos处的二进制位取反
b.to_ulong() 把b中同样的二进制位返回一个unsigned
os << b      把b中的位集输出到os流

参考资料:《C++ Primer》

MSDN:http://msdn.microsoft.com/zh-cn/library/zfae7kt8.aspx

例题见题解链接:https://blog.csdn.net/GodJing007/article/details/81044243


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值