ACM模板——bitset小结

对于一个叫做a的bitset:
a.size()      返回大小(位数)
a.count()     返回1的个数
a.any()       返回是否有1
a.none()      返回是否没有1
a.set()       全都变成1
a.set(p)      将第p+1位变成1
a.set(p, x)   将第p+1位变成x
a.reset()     全都变成0
a.reset(p)    将第p+1位变成0
a.flip()      全都取反
a.flip(p)     将第p+1位取反
a.to_ulong()  返回它转换为unsigned long的结果,如果超出范围则报错
a.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
a.to_string() 返回它转换为string的结果
bitset<4> a ( string("1001"));
bitset<4> b ( string("0011"));

cout << (a^=b) << endl;       // 1010 
cout << (a&=b) << endl;       // 0010
cout << (a|=b) << endl;       // 0011 

cout << endl << a << endl;    // 0011
cout << b << endl << endl;    // 0011

cout << (a<<=2) << endl;      // 1100 
cout << (a>>=1) << endl;      // 0110

cout << endl << a << endl;    // 0110
cout << b << endl << endl;    // 0011

cout << (~b) << endl;         // 1100 
cout << (b<<1) << endl;       // 0110 
cout << (b>>1) << endl;       // 0001

cout << (a==b) << endl;       // false (0110==0011)
cout << (a!=b) << endl;       // true  (0110!=0011)

cout << (a&b) << endl;        // 0010
cout << (a|b) << endl;        // 0111
cout << (a^b) << endl;        // 0101

 

上一篇:面试题 : 一个单调递增的数组 随机拿出一个数 你怎么找到这个数


下一篇:使用VS2010的C中的位集