概念
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
的无符号长整数形式。