bitset 小记

std::bitset 包含在 bitset 头文件里,是一种处理二进制串的数据结构。

操作符

std::bitset 支持所有位运算,能够在 \(O(\frac n w)\) 的时间内计算。
支持 [] 运算符访问指定位置的元素。下标为 0 的元素对应最低位。
支持使用 << 运算符通过输出流输出。

赋值

std::bitset 可以由 const char*(C 字符串)、std::string(C++ 字符串)和整数类型初始化或赋值。要求字符串只包含 01,整数类型会自动转化为对应的二进制。

成员函数

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 倍以上的时间(访问、修改单个元素效率低下)。

猜你喜欢

转载自www.cnblogs.com/natsuka/p/12792722.html
今日推荐