STL————bitset

C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。

 1 bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0
 2 
 3 bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充,把12转成二进制
 4 
 5 string s = "100101";
 6 bitset<10> bitset3(s);  //长度为10,前面用0补充
 7     
 8 char s2[] = "10101";
 9 bitset<13> bitset4(s2);  //长度为13,前面用0补充
10 
11 cout << bitset1 << endl;  //0000
12 cout << bitset2 << endl;  //00001100
13 cout << bitset3 << endl;  //0000100101
14 cout << bitset4 << endl;  //0000000010101

用字符串构造时,字符串只能包含 '0' 或 '1' ,否则会抛出异常。

构造时,需在<>中表明bitset 的大小(即size)。

在进行有参构造时,若参数的二进制表示比bitset的size小,则在前面用0补充(如上面的栗子);

若比bitsize大,参数为整数时取后面部分,参数为字符串时取前面部分(如下面栗子):

 1 bitset<2> bitset1(12);  //12的二进制为1100(长度为4),但bitset1的size=2,只取后面部分,即00
 2 
 3 string s = "100101";  
 4 bitset<4> bitset2(s);  //s的size=6,而bitset的size=4,只取前面部分,即1001
 5 
 6 char s2[] = "11101";
 7 bitset<4> bitset3(s2);  //与bitset2同理,只取前面部分,即1110
 8 
 9 cout << bitset1 << endl;  //00
10 cout << bitset2 << endl;  //1001
11 cout << bitset3 << endl;  //1110

 to_ulong()

输出是用到了to_long()来输出,这个是用来控制bitset中的输出宽度的。

1110和10001的二进制都超过了初始设定的长度。

1 bitset<4> bit(1110); //将十进制1110转化成二进制只有,取后面四位,得到6
2 cout<<bit.to_ulong()<<endl; 
3 bitset<5> ait(10001);//将十进制10001转换为二进制之后,取后面5位,得到17
4 cout<<ait.to_ulong()<<endl;

 conunt

返回的是1的个数。

bitset.count();//返回的是1的个数

bitset.size()-bitset.count();//这样就是0的个数

posted @ 2019-06-18 16:05  Austin_anheqiao  阅读(152)  评论(0编辑  收藏  举报