c++ bitset詳解
bitset
使用bitset需要添加頭文件bitset ,bitset是一種特殊的容器 ,bitset數(shù)組中 ,每個成員只裝1bit位的數(shù)據(jù) , 即只能是0 或 1。
bitset 的基本用法 :
初始化bitset容器
bitset<‘size'> 容器名;未初始化容器數(shù)據(jù),會默認每位都是0
也可以給一個具體的初始化:存入int數(shù)據(jù)
bitset<‘size'> 容器名(‘num');
會將num以二進制形式儲存在bitset中,如果初始化的容器位數(shù)不夠 ,會截取num二進制形式下的左邊部分,如果bitset容器過大,會把多于的位用0填充;
也可以初始化裝入只含0和1的字符串:
biset<‘size'> 容器名('str‘);注 若str中含除0 1 外的字符會報錯
容器會將str原樣儲存在每一位中,若容器過小會優(yōu)先儲存str的左邊部分,過大則用0補足
代碼示例:
bitset<10> a;//每個成員只能裝0 或1 ,默認為0 for(int i = 0 ; i < 10 ; i++) cout<<a[0];//可以以數(shù)組形式索引bitset容器 cout<<endl; bitset<5> a1(12);//把10以二進制形式存入,容器多余的位用0補齊 cout<<a1<<endl;//01100 for(int i = 0 ; i < 5 ; i++) cout<<a1[i];//00110 注 bitset容器以數(shù)組形式索引時是從右往左索引 cout<<endl; bitset<5> a2("0100"); cout<<a2<<endl;//00100
也可以使用二維形式的bitset容器(感覺像是二維)
bitset<‘size'> 容器名[n];
n表示初始化n個size字節(jié)的bitset容器
bitset<5> b[4]; for(int i = 0 ; i < 4 ; i++) { b[i] = i; cout<<b[i]<<endl; }
可以向b[i]中存入數(shù)據(jù),也可以索引某個位
cout<<b[1][0]<<endl;
輸出結(jié)果1;
betsit用于數(shù)據(jù)壓縮
bitset<1000> a;//可以用于表示1000以下的正整數(shù),若a[i] = 1 , 則表示存儲的有i這個數(shù),這樣一個容器就可以壓縮存儲很多不同的數(shù)據(jù) a = a<<i;//這樣操作就可以給a中壓縮存儲的數(shù)據(jù)都加上i,可大幅降低時間復(fù)雜度 a = a>>i;//同理也可以都減去i , 之后索引哪些位是1就可以知道計算后的結(jié)果
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲詳解
這篇文章主要給大家介紹了關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色
這篇文章主要介紹了C/C++ 中如何使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03數(shù)據(jù)結(jié)構(gòu)用兩個棧實現(xiàn)一個隊列的實例
這篇文章主要介紹了C++語言數(shù)據(jù)結(jié)構(gòu)用兩個棧實現(xiàn)一個隊列的實例的相關(guān)資料,需要的朋友可以參考下2017-06-06C++模板基礎(chǔ)之函數(shù)模板與類模板實例詳解
C++ 除了支持函數(shù)模板,還支持類模板(Class Template),所以下面這篇文章主要給大家介紹了關(guān)于C++模板基礎(chǔ)之函數(shù)模板與類模板的相關(guān)資料,需要的朋友可以參考下2021-06-06