bitset存储二进制数位。
bitset就像一个bool类型的数组一样,但是有空间优化。
bitset中的每个元素都能单独被访问,例如对于一个叫做a的bitset,表达式a[3]访问了它的第4个元素,就像数组一样。
(但是输出单独访问结果不能用printf,和bitset有关的输出都用cout)
另外bitset的大小在编译时就需要确定,也就是说bitset<>的尖括号中写的是大小。
#include <iostream>
#include <bitset>
using namespace std;
bitset<32> a(string("11111"));//注意是右对齐
bitset<2> b(string("10101"));//过长从头开始取
bitset<32> c(16);//保存进一个int的常用写法
int main(){
cout << a << endl;
cout << b << endl;
cout << c << endl;
return 0;
}

bitset的运算就像一个普通的整数一样,可以进行与(&)、或(|)、异或(^)、左移(<<)、右移(>>)操作。
初始化bitset对象的方法
|
bitset<n> b; |
b有n位,每位都为0 |
|
bitset<n> b(u); |
b是unsigned long型u的一个副本 |
|
bitset<n> b(s); |
b是string对象s中含有的位串的副本 |
|
bitset<n> b(s, pos, n); |
b是s中从位置pos开始的n个位的副本 |
bitset操作
|
b.any() |
b中是否存在置为1的二进制位? |
|
b.none() |
b中不存在置为1的二进制位吗? |
|
b.count() |
b中置为1的二进制位的个数 |
|
b.size() |
b中二进制位的个数 |
|
b[pos] |
访问b中在pos处的二进制位 |
|
b.test(pos) |
b中在pos处的二进制位是否为1? |
|
b.set() |
把b中所有二进制位都置为1 |
|
b.set(pos) |
把b中在pos处的二进制位置为1 |
|
b.reset() |
把b中所有二进制位都置为0 |
|
b.reset(pos) |
把b中在pos处的二进制位置为0 |
|
b.flip() |
把b中所有二进制位逐位取反 |
|
b.flip(pos) |
把b中在pos处的二进制位取反 |
|
b.to_ulong() |
用b中同样的二进制位返回一个unsigned long值 |
|
os << b |
把b中的位集输出到os流 |
本文详细介绍了bitset在C++中的使用,包括其存储方式、初始化方法、基本操作及位运算。bitset类似于bool数组,但进行了空间优化,适用于高效处理二进制位操作。
359

被折叠的 条评论
为什么被折叠?



