bitset 落日映苍穹つ 2022-05-27 05:53 138阅读 0赞 **bitset **类简化了位集的处理,有些程序要使用二进制位的有序集来保存一组项或条件的标志位,可以考虑使用**bitset**。 需要的文件: \#include <bitset> l **bitset ****对象的定义和初始化** 定义**bitset**时,要明确**bitset**有多少位: **bitset<32> bitvec // 32****位二进制,初始化为****0****,****0~31** 用**unsigned **值初始化**bitset** 对象: 当用**unsigned **值初始化**bitset** 对象时,该值将转化为二进制的位模式。如果**bitset**类型长度大于 **unsigned **值的二进制位数,则其余的高阶位将置为0;如果**bitset** 类型长度小于**unsigned **值的二进制位数,则只使用**unsigned**值中的低阶位,超过**bitset**类型长度的高阶位将被丢弃。 **bitset<16> bit ( 0xFFFF ) // 0~15****位都置****1** **bitset<32> bit ( 0xFFFF ) // 0~15****位置****1****,****16~31****位置****0** 用 **string **对象初始化**bitset**对象 **string strval ( “1100” )** **bitset<32> bit ( strval )** 注意:从**string**对象读入位集的顺序是从右向左。即反向转化:**string**对象最右边的字符用来初始化**bitset**对象的低阶位(即下标为0的位)。 **bit **的位模式中第2和3位置为1,其余位置都为0。如果**string**对象的字符个数小于**bitset**类型的长度,则高阶位将置为0。 不一定要把整个**string**对象都作为**bitset**的初始值,可以只用某个子串作为初始值: **string str ( “111111111100000000011011” )** **bitset<32> bit ( str , 5 , 4 )** l **bitset****的成员函数** **any() **是否存在位置为1的二进制位 **none() **不存在置为1的二进制位? **count() **置为1的二进制位的个数 **size() **总的二进制位的个数 **\[pos\] **访问在pos处的二进制位 **test(pos) **pos处的二进制位是否为1 **set() **所有位都置1 **set(pos) **pos处的二进制置1 **reset() **所有二进制置0 **reset(pos) **pos处的二进制位置0 **flip() **所有位置反 **flip(pos) **pos位置反 **to\_ulong() **返回一个 unsigned long 值
还没有评论,来说两句吧...