bitset
\(\text{bitset}\) 一般代替 \(\text{bool}\) 数组使用,常用于优化空间,因为 \(\text{bitset}\) 中一个元素只占 \(1bit\)。当然,由于 \(\text{bitset}\) 只能存储 \(1\) 和 \(0\),所以它在某些二进制题中也可以使用。
\(\text{bitset}\) 的大小在定义使就需要确定。如果想要不定长的 \(\text{bitset}\),就需要使用 \(\text{vector}\)。
\(\text{bitset}\) 的定义:
bitset<16> b;//定义大小为16的bitset,每一位都是0
bitset<16> b(string("11001"));//定义大小为16的bitset,并用string初始化,注意高位为0,也就是 0000000000011001
\(\text{bitset}\) 还有一个优势就是操作更加便捷。它可以直接使用 \(\text{cin}\) 和 \(\text{cout}\) 输入输出。
bitset<16> b;
cin>>b;
cout<<bt << endl;
\(\text{bitset}\) 也可以像一个数一样进行位运算:与、或、异或、取反、左移、右移。
常用函数:
bitset<8> b;
b.size();//返回大小
b.count();//返回1的个数
b.set();//全部置1
b.set(pos);//pos位置1
b.reset();//全部置0
b.reset(pos);//pos位置0
b.flip();//全部取反
b.flip(pos);//pos位取反

浙公网安备 33010602011771号