C++中 bitset的用法及解释

本文介绍了C++中的bitset类,用于高效管理位集合,常用于位压位操作。bitset在内存中根据特定规则分配空间,如在32位机器上,Size = 4 * ((N + 31) / 32)。虽然不能动态改变大小,但提供了构造函数、查询和修改位的操作,如count()、set()、reset()和flip()。可以通过下标方式直接访问和修改位。
摘要由CSDN通过智能技术生成

~这里我们来介绍一下bitset的用法~

bitset

首先我们了解一下什么是bitset:
①:C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码。bitset除了可以访问指定下标的bit位以外,还可以把它们作为一个整数来进行某些统计。
②:大小可动态改变, 取值为true或false的位集合。用于表示一组bool标志。
它隶属于头文件 <bitset> <script type="math/tex" id="MathJax-Element-78"> </script>

通常运用于压位,它占得空间非常小

bitset占用的空间确实会比使用bool型的数据小很多,但是其中确还是有些不明白的地方,为什么当我们只有一位的时候占用的字节数为4字节,如果按照不能跨界的原则的话也应该是1个字节或者两个字节,于是我查阅下相关资料,在bitset中计算其大小的时候并不是简单地不能跨界的原则,其是有一个计算规则的在32位机器上Size = 4 * ((N + 31) / 32)在64位机器上Size = 8* ((N + 63) / 64)这样我们就不难得到结果了,4*((1+31)/32) = 4,这样其实充分提高了内存的读写效率,确实是很聪明的作法。
但是bitset在定义变量时必须确定变量的大小,虽然说bitset也是一个容器,但是它并不像vector等容器那样可以动态增加容量,且其容量不能动态确定
列出了bitset的构造函数。类似于vector,bitset类是一种类模板;而与vector不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset时,要明确bitset含有多少位,须在尖括号内给出它的长度值:

bitset<32> bitvec; //32位,全为0。

bitset给出的长度值必须是常量表达式(2.7节)。正如这里给出的,长度值必须定义为整型字面值常量或是已用常量值初始化的整数类型的const对象。
这条语句把bitvec定义为含有32个位的bitset对象。和vector的元素一样,bitset中的位是没有命名的,程序员只能按位置来访问它们。位集合的位置编号从0开始,因此,bitvec的位序是从0到31。以0位开始的位串是低阶位(low-order bit),以31位结束的位串是高阶位(high-order bit)。

bitset用法

  • bitset b : bn0
  • bitset b(u): bu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值