用处
一含有特定二进制位数 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 |
|