【bitset】

------ 用法概括

· 实质:bitset 可看作一个多位二进制数,相当于采用了 状态压缩的二进制数,支持所有位运算操作符
· 声明bitset<10000> s;
表示10000位二进制数,<>中间填写位数

------ 指令概括

[ ] 操作符

  • s[k]:表示 s 的第 k 位,可以取值,可以赋值。同普通数组一样,是 “前闭后开” 的形式

count

  • s.count():返回 s 中有多少位 1

any/none

  • s.any():若 s 中至少一位为 1,返回 true,否则返回 false
  • s.none():若 s 所以位都为 0,返回 true,否则返回 false

set/reset/flip

  • s.set():把 s 所有位改为 1
  • s.set(k,x):把 s 的第 k 位改为 x,即 s[k]=x
  • s.reset():把 s 所有位改为 0
  • s.reset(k):把 s 的第 k 位改为 0,即 s[k]=0
  • s.flip():把 s 所有位取反,即 s=~s
  • s.flip(k) 把 s 的第 k 位取反,即 s[k]^=1

------ 示例

bitset 的赋值与输出

string a="1000"; // a也可以为 char类型或 int类型 
bitset<4> s(a); //用括号赋值,不支持等号
int main() {
	cout<<s[3]<<endl; // []操作符返回 string类型,因此只能使用 cout输出 
	cout<<s<<endl; 
	printf("%d",s); //以 int类型输出,因此转换为十进制 
	return 0;
}

输出结果:
1
1000
8

部分 大部分 绝大部分 摘抄于《算法进阶》(一本好书)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值