用处
一含有特定二进制位数 N 的容器,相当于 bool 数组,但压缩内存至每一个二进制位。
申明
bitset<N> bset,其中 N 为字面常量,表示 bitset 中的二进制位个数。如 bitset<10> bset;
常用方法
bitset(unsigned long val) 用 val 构造一个对应的 bitset (至 C++11 前)
bitset(unsigned long long val) 用 val 构造一个对应的 bitset (自 C++11 始)
bitset(string val) 用 val 构造一个对应的 bitset
bool operator[] 获取特定二进制位的值
bool test(pos) 获取特定二进制位的值,但有越界检查:如果越界,抛出 std::out_of_range 异常。
bool all() 是否所有二进制位都是1 (自 C++11)
bool any() 是否有二进制位是1
bool none() 是否所有二进制位都是0
size_t count() 返回二进制位是1的二进制位个数
size_t size() 返回 N
bitset<N>& operator&=(const bitset<N>& other) 与操作
bitset<N>& operator|=(const bitset<N>& other) 或操作
bitset<N>& operator^=(const bitset<N>& other) 异或操作
bitset<N> operator~() 非操作
bitset<N> operator<<(size_t pos) 左移
bitset<N>& operator<<=(size_t pos) 自左移
bitset<N> operator>>(size_t pos) 右移
bitset<N>& operator>>=(size_t pos) 自右移
bitset<N>& set() 将全部位设为1
bitset<N>& set(pos, value) 将pos位设为 value
bitset<N>& reset() 将全部位设为0
bitset<N>& reset(pos) 将pos位设为0
bitset<N>& flip() 翻转所有位(与 operator~ 类似,但是是直接在原数上进行)
bitset<N> &flip(pos) 翻转第pos位
string to_string(char zero = '0', char one = '1') 转为字符串
unsigned long to_ulong() 转为 unsigned long ,若溢出则抛出 std::overflow_error
unsigned long long to_ullong() 转为 unsigned long long ,若溢出则抛出 std::overflow_error (自C++11)
代码示例
1 |
|