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位取反
posted @ 2024-08-13 07:56  MinimumSpanningTree  阅读(9)  评论(0)    收藏  举报