现在的位置: 首页 > 综合 > 正文

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

2019年11月20日 ⁄ 综合 ⁄ 共 1070字 ⁄ 字号 评论关闭

四、标准库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位置的值

抱歉!评论已关闭.