一、bitset 头文件
C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。
二、bitset常用构造函数
1、bitset<n> b;
b有n位,每位都为0;参数n可以为一个表达式;
如bitset<5> b0;则"b0"为"00000";
2、bitset<n> b(unsigned long u);
b有n位,并用u赋值;如果u超过n位,则顶端被截除
如:bitset<5>b0(5);则"b0"为"00101";
3、bitset<n> b(string s);
b是string对象s中含有的位串的副本
string bitval ( "10011" );
bitset<5> b0 ( bitval4 );
则"b0"为"10011";
4、bitset<n> b(s, pos);
b是s中从位置pos开始位的副本,前面的多余位自动填充0;
string bitval ("01011010");
bitset<10> b0 ( bitval5, 3 );
则"b0" 为 "0000011010";
5、bitset<n> b(s, pos, num);
b是s中从位置pos开始的num个位的副本,如果num<n,则前面的空位自动填充0;
string bitval ("11110011011");
bitset<6> b0 ( bitval5, 3, 6 );
则"b0" 为 "100110";
注意:在用字符串构造时,字符串中只能包含‘0’和‘1’,否则抛出异常;
可以通过[ ]访问元素,类似数组,注意最低下标为0;
三、可用函数
bool any( ) //是否存在置为1的二进制位?
bool none( ) //是否不存在置为1的二进制位,即全部为0?
size_t count( ) //二进制位为1的个数;
size_t size( ) //二进制位的个数;
flip() //把所有二进制位逐位取反;
flip(size_t pos) //把在pos处的二进制位取反;
bool operator[]( size_type _Pos ) //获取在pos处的二进制位;
set() //把所有二进制位都置为1;
set(pos) //把在pos处的二进制位置为1;
reset() //把所有二进制位都置为0;
reset(pos) //把在pos处的二进制位置为0;
test(size_t pos // 在pos处的二进制位是否为1?
unsigned long to_ulong( ) // 用同样的二进制位返回一个unsigned long值;
string to_string () //返回对应的字符串.;
最后还有一些类型转换的函数
举个栗子:
bitset<8> foo ("10011011"); string s = foo.to_string(); //将bitset转换成string类型 unsigned long a = foo.to_ulong(); //将bitset转换成unsigned long类型 unsigned long long b = foo.to_ullong(); //将bitset转换成unsigned long long类型
参考网上资料整理而成,加油喔!