STL之bitset
生活随笔
收集整理的這篇文章主要介紹了
STL之bitset
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
bitset是C++的類庫,它便于我們管理一系列的bit位。
1.使用前加上頭文件:
#include <bitset>using namespace std;//2.bitset的構造:bitset<bitNum>b; //具有bitNUm位的b/*3.bitset的操作:1)b.all()//b中是否全是12)b.any()//b中是否存在值為1的二進制位?3)b.none()//b中不存在值為1的二進制位嗎?4)b.count()//b中含有多少個值為1的二進制位5)b[pos]//訪問b在pos位中的二進制(最右邊的位為第一位(b[0]))6)b.set()//把b中所有二進制位都置為17)b.set(pos)//把b中 b[pos] 置為18)b.reset()//把b中所有二進制位都置為09)b.reset(pos)//把b中 b[pos] 置為010)b.flip()//把b中所有二進制逐位取反11)b.flip(pos)//把b中b[pos]取反12)b.to_string()//用b中同樣的二進制位返回一個字符串13)b.to_ulong()//用b中同樣的二進制位返回一個unsigned long值14) b.to_ullong()//用b中同樣的二進制位返回一個unsigned long long值 *///測試代碼:#include <iostream>#include <stdio.h>#include <bitset>#include <string>using namespace std;int main(){bitset<5>b,c;//具有5個bit位的bitset b,c//0的二進制:00000//30的二進制:01111b = 0;//從右往左,將30的5個bit位存入bitset b,此時b相當一個數組,下標從0開始c = 30;//printf("%d",b[0]);編譯,出現錯誤,使用bitset不能用printf來訪問cout<<"b: "<<b<<endl;cout<<"c: "<<c<<endl;cout<<"c二進制位全是1嗎? "<<c.all()<<endl;cout<<"c 的bit位數 "<<c.size()<<endl;//之前定義的時候,bitNUm只取了5位cout<<"b中存在為1的二進制嗎? "<<b.any()<<" c中存在為1的二進制嗎? "<<c.any()<<endl;cout<<"b中不存在為1的二進制嗎? "<<b.none()<<" c中不存在為1的二進制嗎? "<<c.none()<<endl;cout<<"b中有多少個為1的二進制位? "<<b.count()<<" c中有多少個為1的二進制位? "<<c.count()<<endl;cout<<"b的第1位是:"<<b[0]<<endl;cout<<"b的第5位是:"<<b[4]<<endl;cout<<"c的第1位是:"<<c[0]<<endl;cout<<"c的第5位是:"<<c[4]<<endl;b.set();cout<<"經過b.set()后,b變為"<<b<<endl;b.reset();cout<<"再經過b.reset()后,b變為"<<b<<endl;c.set(0);cout<<"經過c.set(0)后,c的第1位(c[0])變為:"<<c[0]<<endl;c.reset(0);cout<<"經過c.reset(0)后,c的第1位變為:"<<c[0]<<endl;b.flip();cout<<"再經過b.flip()后,b變為"<<b<<endl;b.flip(4);cout<<"經過b.flip(4),b的第5位變為:"<<b[4]<<endl;cout<<"b轉換為同樣的字符串形式:";string s = b.to_string();cout<<s<<endl;cout<<"b的二進制位返回的unsigned long:";unsigned long x = b.to_ulong();cout<<x<<endl;return 0;}
官方通道: bitset reference C++
總結
以上是生活随笔為你收集整理的STL之bitset的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: #1097 : 最小生成树一·Prim算
- 下一篇: 基础练习 01字串(取位操作)