C bitset類的使用

2021-10-09 03:30:44 字數 3585 閱讀 1368

因為無知而學習,因為學習而更感無知。

在刷題過程中遇到不少的位操作,這裡有必要學習一下c++ 內建的bitset類。歡迎各位指出文中的錯誤。

本文主要內容:

1. bitset類的函式使用

2. 自己實現的mybitset類

–**主要參考《c++ primer》

#include

//包含標頭檔案,是標準庫的標頭檔案

#include

#include

using

namespace std;

/*在c++中,int 和long值範圍一樣,4bytes

unsigned int 和unsigned long 取值範圍一樣,4bytes

long long 佔8個位元組,有符號整型。

unsigned long long佔8位元組,無符號整型。

*///建構函式。bitset是乙個類,類似於vector和array

void

constructiontset()

void

operatortest()

void

test03()

intmain()

根據c++提供的標準類bitset函式的功能,使用vector輔助實現乙個類,該類包含bitset的大多數功能。

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

template

class

mybitset final

;mybitset

(unsigned

long

long n)

reverse

(vec.

begin()

, vec.

end())

;//翻轉

}else

if(v.

size()

<=cap)

*/reverse

(v.begin()

, v.

end())

;for

(int i =

0; i < v.

size()

; i++)}

}mybitset

(string s,size_t pos=

0,size_t end=-1

) end = end + pos;

exception e1

("invaild_argument!");

exception e2

("傳入的引數有誤!");

tryfor

(int i = pos; i catch

(exception e)

if(end - pos <= cap)

for(

int i = cap -

(end - pos)

, j = pos; i < cap; i++

)else

if(s[j]

=='0'

) j++;}

}else

if(end - pos > cap)

else

if(s[j]

=='0'

) j++;}

}}template

friend ostream&

operator

<<

(ostream& out, mybitset

& b)

;bool

operator

(size_t pos)

const

bool

any(

)const

return

false;}

bool

all(

)const

}return

true;}

bool

none()

const

return

true;}

size_t count()

const

return res;

}constexpr size_t size()

const

bool

test

(size_t pos)

const

else

}catch

(exception e)

} mybitset&

set(size_t pos,

bool val)

else

}catch

(exception e)

return

*this;}

mybitset&

set(

)noexcept

return

*this;}

mybitset&

reset()

noexcept

return

*this;}

mybitset&

flip()

return

*this;}

mybitset&

flip

(size_t pos)

string to_string()

noexcept

}return str;

}unsigned

long

to_ulong()

}try

else

}return res;};

return

fun();

}}catch

(exception e)

}unsigned

long

long

to_ullong()

}try

else

}return res;};

return

fun();

}}catch

(exception e)}}

;//重寫輸出輸出運算子時,只能採用全域性函式的方式,因為不能再ostream和istream類中編寫成員函式。將過載輸入輸出運算子和函式宣告為友元函式。並且返回輸入輸出流物件,支援鏈式操作。

template

ostream&

operator

<<

(ostream& out, mybitset

& b)

return out;

}vector<

bool

>

inttobinary

(unsigned

long

long n)

return v;

}int

main()

C bitset類的使用與簡介

介紹 有些程式需要處理二進位制有序集,標準庫提供了bitset 型別,事實上,bitset 是乙個二進位制容器,容器中每乙個元素都是一位二進位製碼,或為 0,或為 1。使用 include using std bitset 1.定義與初始化 在定義 bitset 時,要明確 bitset 有多少位,...

C bitset的簡單使用示例

bitset 一般代替 bool 陣列使用,常用於優化空間,因為 bitset 中乙個元素只佔 1 bit。bitset 的大小在定義使就需要確定。如果想要不定長的 bitset,就需要使用 vector。bitset 的定義 bitset 16 bt 定義大小為16的bitset,每一位都是0 b...

C bitset 二進位制位的有序集

c 的 bitset 在 bitset 標頭檔案中,它是一種類似陣列的結構,它的每乙個元素只能是 或 每個元素僅用 bit空間。bitset常用建構函式有四種,如下 bitset 4 bitset1 無參構造,長度為 預設每一位為 bitset 8 bitset2 12 長度為 二進位制儲存,前面用...