C++算法与数据结构bitset指南
C++算法与数据结构Bitset指南
多位二进制数,支持随机访问。头文件
模板申明与构造函数
初始化bitset时必须在模板内指明长度,长度为一常量表达式
bitset<num> b;//初始化为n位,每位为0
bitset<num> b(u);//初始化b为另一容器的副本,该容器可以是bitset,unsigned int, unsigned long long, string
bitset<num> b(str,pos,n);//初始化b为指定字符串str从pos位开始,n位的副本
bitset相比bool数组不同的是,布尔变量会占用一个字节,而bitset中的一位实打实的只占用一个bit
运算符重载
bitset可以直接使用逻辑运算符实现按位逻辑运算,使用bitset优化布尔数组的逻辑运算操作是一种常见的优化方式。
成员函数
bs.count();//统计有多少位为1
bs.any();//判断是否存在1
bs.none();//判断是否为全0
bs.set();//全部置1
bs.set(k);//将第k位置为1
bs.set(k,val);//将第k位置为val
bs.reset();//所有位置0
bs.reset(k);//将第k位置0
bs.filp();//所有位取反
bs.filp();//第k位取反
bs.size();//返回大小
bs.to_ulong();//返回ulong结果,若bitset表示的数的大小超出ulong范围,则会报错
bs.to_string();//返回string结果