std::bitset
包含在 bitset
头文件里,是一种处理二进制串的数据结构。
操作符
std::bitset
支持所有位运算,能够在 \(O(\frac n w)\) 的时间内计算。
支持 []
运算符访问指定位置的元素。下标为 0 的元素对应最低位。
支持使用 <<
运算符通过输出流输出。
赋值
std::bitset
可以由 const char*
(C 字符串)、std::string
(C++ 字符串)和整数类型初始化或赋值。要求字符串只包含 0
和 1
,整数类型会自动转化为对应的二进制。
成员函数
to_string
返回一个 std::string
类型的字符串,对象对应的 01 字符串。
to_ullong
返回一个 unsigned long long
类型的整数,对象对应的整数。溢出则报错。
set
将对象的所有元素置为 1。
reset
将对象的所有元素置为 0。
any
返回一个布尔值,对象中是否存在 1。
none
返回一个布尔值,对象中是否不存在 1。
size
返回一个整数,对象的大小。
count
返回一个整数,对象中 1 的数量。
用处
需要进行大规模的位运算时可以使用 std::bitset
优化。
不需要位运算,而只是单纯存储一些布尔值时,千万不要使用 std::bitset
,因为它虽然能够节省 8 倍的空间,却要消耗 10 倍以上的时间(访问、修改单个元素效率低下)。