程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 認識C++中的bitset類型,認識cbitset類型

認識C++中的bitset類型,認識cbitset類型

編輯:C++入門知識

認識C++中的bitset類型,認識cbitset類型


認識標准庫bitset類型

位是用來保存一組項或者條件的yes/no(1或者0)信息的一種簡潔方法,那麼位集就是二進制位的有序集。C++中標准庫提供的bitset類在我們程序中就很有效的簡化了對於位集的處理。

bitset對象的定義

我們要使用bitset,首先需要包含頭文件bitset。和vector對象不一樣的是bitset類型對象的區別僅在其長度而不在其類型。在定義bitset的時候,要明確bitset包含了多少位,須在尖括號內給出它的長度值。長度值必須定義為整形字面值常量或是已用常量值初始化的整型的const對象。

1 const int maxn=16;
2 bitset<32> bitvec2;
3 bitset<maxn> bitvec(1);

bitset中以0位開始的位串是低階位,以31位結束的位串是高階位。

bitset對象的初始化

1.用unsigned值初始化

當用unsigned long值作為bitset對象的初始值時,該值將轉化為二進制的位模式。而bitset對象中的位集作為這種位模式的副本。如果bitset類型長度大於unsigned long的值的二進制位數,則其余的高階位將置為0;如果bitset類型長度小於unsigned long值的二進制位數,則只使用unsigned值中的低階位,超過bitset類型長度的高階位將被丟棄。

1 bitset<32> bitvec3(0xffff);
2 cout<<bitvec3<<endl;
3 for (int i=0 ; i<bitvec3.size() ; i++)
4     cout<<bitvec3[i]<<" ";
5 cout<<endl;

 

2.用string對象初始化bitset對象

當用string對象初始化bitset對象時,string對象直接表示為位模式。從string對象讀入位集的順序是從右往左。

1 string str("11100");
2 bitset<8> bitvec5(str);
3 cout<<bitvec5<<endl;
4 for (int i=0 ; i<bitvec5.size() ; i++)
5     cout<<bitvec5[i]<<" ";

注意:string對象和bitset對象之間是反向轉化的,string對象的最右邊字符(即下標最大的那個字符)用來初始化bitset對象的低階位(即下標為0的位)。

訪問bitset對象中的位

和 vector一樣,bitset也可以通過下標操作符來讀寫某個索引位置的二進制位,同樣的,也可以用下標操作符來測試給定二進制位的值或者設置某個二進 制位的值。其實訪問bitset對象中的位就是一個for循環即可搞定,上文代碼插圖中就有提到,這裡就不作詳細介紹了。

bitset操作函數

bitset操作函數具體實現

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<bitset>
 8 using namespace std;
 9 const int maxn=16;
10 
11 int main()
12 {
13     bitset<16> b2;
14     cout<<"b2.any() = "<<b2.any()<<endl;
15     cout<<"b2.none()= "<<b2.none()<<endl;
16     cout<<"b2.size()= "<<b2.size()<<endl;
17     cout<<"b2[4]= "<<b2[4]<<endl;
18     cout<<"b2.test(4)= "<<b2.test(4)<<endl;
19     b2.set() ; cout<<endl;
20     cout<<"b2.any() = "<<b2.any()<<endl;
21     cout<<"b2.none()= "<<b2.none()<<endl;
22     cout<<"b2.size()= "<<b2.size()<<endl;
23     cout<<"b2[4]= "<<b2[4]<<endl;
24     cout<<"b2.test(4)= "<<b2.test(4)<<endl;
25     b2.reset() ; cout<<endl;
26     cout<<"b2.any() = "<<b2.any()<<endl;
27     cout<<"b2.none()= "<<b2.none()<<endl;
28     cout<<"b2.size()= "<<b2.size()<<endl;
29     cout<<"b2[4]= "<<b2[4]<<endl;
30     cout<<"b2.test(4)= "<<b2.test(4)<<endl;
31     b2.set(4) ; cout<<endl;
32     cout<<"b2[4]= "<<b2[4]<<endl;
33     cout<<"b2.test(4)= "<<b2.test(4)<<endl;
34     return 0;
35 }

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved