bitset

用处

一含有特定二进制位数 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
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <bitset>

using namespace std;

int main() {
bitset<10> bset(15);
cout << bset << '\n'; // output: 0000001111
return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×