STL的bitset是一个对位进行存储和操作的容器,可以轻松对bit位进行访问.
bitset的模板声明如下:
template<size_t _Bits> class bitset;
这里我们要给出需要分配位数.
vs2008中bitset内部使用的是一个unsigned long数组来存储数据, 在x86,32位机器中一个unsigned long长度为4个字节,也就是32位.
bitset内部实现不复杂,就是对unsigned long数组进行位操作,下面给一个例子,展示bitset用法.
![](https://images0.cnblogs.com/blog/339657/201310/07211522-c5237a1953f341768a619ff52718ca7d.png)
输出
![](https://images0.cnblogs.com/blog/339657/201310/07211532-eec956d06cc1475db2bb01f053f27f0d.png)
set操作默认是将所有位置为1, set可以对某一位设置值;
reset默认是将所有位置为0, reset还可以将某一位设置为0;
flip操作是将指定位翻转,0变1, 1变0;
[]操作可以直接设置一位的值.
test测试指定为是否为1, 是则true,否则false;
any测试所有位是否为1, 是则true,否则false;
none测试所有位是否为0, 是则true,否则false;