概念
C++ Bitsets给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。
头文件
1 |
名字空间
1 | std |
构造函数
语法:
1 | bitset(); |
C++ Bitsets能以无参的形式创建,或者提供一个长无符号整数,它将被转化为二进制,然后插入到bitset中。当创建bitset时,模板中提供的数字决定bitset有多长。
例如,以下代码创建bitset,然后显示它们:
1 | bitset<4> bitset1; //无参构造,长度为4,默认每一位为0 |
运算符
语法:
1 | !=, ==, &=, ^=, |=, ~, <<=, >>=, [] |
这些操作符都可以和bitsets一起工作。它们被这样定义:
- != 返回真如果两个
bitset不相等。 - == 返回真如果两个
bitset相等。 - &= 完成两个
bitset间的与运算。 - ^= 完成两个
bitset间的异或运算。 - |= 完成两个
bitset间的或运算。 - ~ 反置
bitset(和调用flip()类似) - <<= 把
bitset向左移动 - >>= 把
bitset向右移动 - [x] 返回第
x个位的引用
例如,以下代码创建一个bitset,然后向左移动4个位:
1 | // 创建一个bitset |
当上述代码运行时,显示:
1 | bs2 is 10000011 |
常用函数
any
语法:
1 | bool any(); |
any()函数返回真如果有位被设置为1,否则返回假。
count
语法:
1 | size_type count(); |
count()函数bitset中被设置成1的位的个数。
flip
语法:
1 | bitset &flip(); |
flip()函数反置bitset中所有的位,即将1设为0,0设为1。如果指定pos,那么只有pos上的位被反置。
none
语法:
1 | bool none(); |
none()返回真如果没有位被设为1,否则返回假。
reset
语法:
1 | bitset &reset(); |
reset()重置bitset(全部设为0),如果指定pos,那么只有pos上的位被重置。
set
语法:
1 | bitset &set(); |
set()函数设置bitset上所有的位,然后返回bitset。如果指定pos,那么只有pos上的位被设置。
size
语法:
1 | size_t size(); |
size()返回bitset能容纳的位。
test
语法:
1 | bool test( size_t pos ); |
test()函数返回在pos上的位的值。
to_string
语法:
1 | string to_string(); |
to_string()函数返回bitset的字符串形式。
to_ulong
语法:
1 | unsigned long to_ulong(); |
to_ulong()返回bitset的无符号长整数形式。