分类: LINUX
2018-03-20 21:44:36
Std::bitset是stl的一部分,准确地说,std::bitset是模板类。
#include
Std::bitset<8> bs; //它是一个模板,传递的参数告诉编译器bs有8个位。
例子:
#include
#include
#include
#define _BITSET_SIZE_ 10
int main(int argc, char **argv)
{
int i;
std::bitset<_BITSET_SIZE_> foo(0xf0);//将foo赋值为0xf0.
for(i = 0; i < _BITSET_SIZE_; i++)
{
if(foo[i] == 0)
{
printf("0");
}
else
{
printf("1");
}
}
printf("\n");
printf("foo.size:%d\n", foo.size());
printf("foo.count:%d\n", foo.count());
printf("foo.any:%d\n", foo.any());
printf("foo.none:%d\n", foo.none());
printf("long:%ld\n", foo.to_ulong());
return 0;
}
执行结果:
tay@tay:/mnt/hgfs/hzs/stl/bitset$ ./a.out
0000111100
foo.size:10
foo.count:4
foo.any:1
foo.none:0
long:240
Bitset的相关函数
对于一个叫做foo的bitset:
foo.size() 返回大小(位数)
foo.count() 返回1的个数
foo.any() 返回是否有1
foo.none() 返回是否没有1
foo.set() 全都变成1
foo.set(p) 将第p + 1位变成1
foo.set(p, x) 将第p + 1位变成x
foo.reset() 全都变成0
foo.reset(p) 将第p + 1位变成0
foo.flip() 全都取反
foo.flip(p) 将第p + 1位取反
foo.to_ulong() 返回它转换为unsigned long的结果,如果超出范围则报错
foo.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
foo.to_string() 返回它转换为string的结果