bitset 和 builtin

bitset

b.size() 返回大小(位数)
b.count() 返回 \(1\) 的个数
b.any() 返回是否有 \(1\)
b.none() 返回是否没有 \(1\)
b.set() 全都变成 \(1\)
b.set(p) 将第 \(p\) 位(最低位为第 \(0\) 位)变成 \(1\)
b.set(p, x) 将第 \(p\) 位变成 \(x\)
b.reset() 全都变成 \(0\)
b.reset(p) 将第 \(p\) 位变成 \(0\)
b.flip() 全都取反
b.flip(p) 将第 \(p\) 位取反
b.to_ullong() 返回它转换为 ull 的结果(超范围则报错)
b.to_string() 返回它转换为 string 的结果
遍历所有 set 的位置:

#include<bits/stdc++.h>
using namespace std;
int main() {
	bitset<1001> B;
	B.set(2); B.set(4); B.set(233);
	for(int i=B._Find_first();i!=B.size();i=B._Find_next(i)) 
		cout<<i<<" ";
 	cout<<"\n";
}

builtin

以下均为无符号整型的函数,ll 版本请在后面追加 ll

__builtin_clz 返回前导 \(0\) 的个数
__builtin_ctz 返回末尾连续 \(0\) 的个数
__builtin_popcount 返回 \(1\) 的个数
__builtin_ffs \(=\) __builtin_ctz \(+1\)
__builtin_parity \(=\) __builtin_popcount \(\&1\)

posted @ 2022-08-01 21:27  ShaoJia  阅读(43)  评论(0)    收藏  举报