您的位置:首页 > 编程语言 > C语言/C++

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

2014-09-04 15:19 309 查看
四、标准库bitset类型

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

bitset对象的定义和初始化


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

初始化方法

说明

bitset<n> b;

b有n位,每位都为0

bitset<n> b(u);

b是unsigned long型u的一个副本

bitset<n> b(s);

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

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

b是s中从位置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)

将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 long值

os << b

将b的位集合直接输出到os流

注:

Ø
b.cout和b.size()返回的是size_t类型,该类型定义在cstddef头文件中(C标准头文件stddef.h的C++版本)
Ø
b[pos]可以作为左值,即可以用来改变pos位置的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: