初识标准库bitset类型

对于要处理二进制位的有序集,每个位可能包含0或1值,我们可以用C++标准库中的bitset类型。

该类型的声明与vector等基本相同,不同的是vector定义时是存放的数据类型,而bitset存放的是大小,

例如:

bitset<32> bitvec;//32 bits,all zero

对其初始化有以下几种方法:

1.bitset<n> b;   //b有n位,每位都为0

2.bitset<n> b(u);   //b是unsigned long型u的一个副本

3.bitset<n> b(u);   //b是string对象s中含有的位串的副本

例:bitset<16> bitvec(0xffff);//bits 0.....15 are set to 1

4.bitset<n> b(s,pos,n); //b是s中从位置pos开始的n个位的副本

例:string str("1111111000000011001101");

       bitset<32> bitvec(str,5,4)  //4 bits starting at str[5],1100

5.bitset<n> b(s,pos);//b是s中pos开始一直到末尾的一个副本

例:string str("1111111000000011001101");

       bitset<32> bitvec(str,str.size-4)  //use last 4 characters 即1101,其余高位均为0

下面给出bitset对象上的操作

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

猜你喜欢

转载自blog.csdn.net/waterboy_cj/article/details/81452830