C++ Primer学习笔记- 第三章:标准库类型之四

四、标准库bitset类型

标准库中bitset类型用来处理二进制位的有序集,bitset类型简化了位集的处理,使用bitset时需要包含头文件#include<bitset>

    bitset对象的定义和初始化   

   bitset也是类模板,不过bitset类型对象之间的区别在于长度而不是类型,因此bitset模板的参数是长度类型

初始化方法

说明

bitset<n> b;

bn位,每位都为0

bitset<n> b(u);

bunsigned longu的一个副本

bitset<n> b(s);

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

bitset<n> b(s, pos, n);

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


 unsigned long值初始化bitset对象

       用unsigned long值初始化bitset对象的时候,将long值转化为二进制模式,然后拷贝到bitset的右方(bitset右边为低阶位,左边为高阶位),string位数多了将被截断,少了bitset将在前面补零。

 

    用string对象初始化bitset对象

string对象初始化bitset对象,需要注意的是,复制拷贝相当于从string位模式平移到了bitset

例如:

string str”11001010”);

bitset<32> bitvec(str);

这个时候,bitvec是这样的:0000 0000 0000 0000 0000 0000 1100 1010最右边是bitset的低阶位,即bitvec[0]bitset[1] …

      bitset对象上的操作

操作调用方式

操作说明

b.any()

测试b中是否有存在1的位

b.none()

测试b中是否全0

b.count()

测试b中置1的位个数

b.size()

b中所有二进制位个数

b[pos]

访问下标为pos位置的位值

b.test(pos)

测试pos位置的二进制位是否为1

b.set()

b所有位置1

b.set(pos)

bpos位置的位置1

b.reset()

b所有位置置0

b.reset(pos)

bpos位置的位置0

b.flip()

b中所有位翻转

b.flip(pos)

bpos位置上的位翻转

b.to_ulong()

b转化为unsigned long

os << b

b的位集合直接输出到os

注:

Ø b.coutb.size()返回的是size_t类型,该类型定义在cstddef头文件中(C标准头文件stddef.hC++版本)

Ø b[pos]可以作为左值,即可以用来改变pos位置的值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值