トップ-> C++入門:7章 STL-> bitset

←前ページへ :  トップへ :  次ページへ→

17. bitset

  bitsetはすでに説明したように、true / falseを格納するのに適したコンテナです。 他のコンテナに「bool」型を格納した場合、bool型は1バイトの領域を必要とするので、 メモリー領域を無駄に使います。そこで、bitsetコンテナを使用します。

  bitsetにはイタレーターがありません。したがってアルゴリズムは使用できません。

bitsetクラスの主要な関数
関数名 書 式 説 明
set bitset<N>& set() すべての要素を1(true)にし、自分自身を返します。
set bitset<N>& set(size_t i, int val) i番目の要素をvalにし、自分自身を返します。
valは0か1を指定します。
reset bitset<N>& reset() すべての要素を0(false)にし、自分自身を返します。
reset bitset<N>& reset(size_t i) i番目の要素を0(false)にし、自分自身を返します。
flip bitset<N>& flip() すべての要素を反転し、自分自身を返します。
flip bitset<N>& flip(size_t i) i番目の反転し、自分自身を返します。
size size_t size() const bitsetが保持できるビットの数を返します
count size_type count() const 1(true)である要素の数を返します。
test bool test(size_t i) const i番めの要素を返します。
iが無効な場合は例外(out_of_range)を投げます。
at bool at(size_t i) const i番めの要素を返します。
iが無効な場合は例外(out_of_range)を投げます。
any bool any() const すべての要素が0(false)なら0(false)を返します。
1つでも1(true)があれば1(true)を返します。
none bool none() const すべての要素が0(false)なら1(true)を返します。
1つでも1(true)があれば0(false)を返します。
to_string string to_string() const bitsetを文字列(ex:"0110100")で返します。
to_ulong unsigned long to_ulong() const bitsetを符号なしlong型として返します。
ただし、bitsetが32よりも多くの要素からなる場合は、例外(overflow_error)が投げられます。
operator== bool operator==(bitset<N>& op2) op2と同じであればtrueを返します。
operator!= bool operator==(bitset<N>& op2) op2と異なればtrueを返します。
operator&= bitset<N>& operator&=(bitset<N>& op2) op2との論理和を代入します。
operator^= bitset<N>& operator^=(bitset<N>& op2) op2との排他的論理和を代入します。
operator|= bitset<N>& operator|=(bitset<N>& op2) op2との論理積を代入します。
operator~ bitset<N> operator~() const 論理否定を返します。
operator<< bitset<N> operator<<(sizt_t num) const 符号なし整数として左にシフトものを返します。
つまり、一番右は0が入ります。
operator>> bitset<N> operator>>(sizt_t num) const 符号なし整数として右にシフトものを返します。
つまり、一番左は0が入ります。
operator<<= bitset<N>& operator<<=(sizt_t num) 符号なし整数として左にシフトし、自分自身を返します。
つまり、一番右は0が入ります。
operator>>= bitset<N>& operator>>=(sizt_t num) 符号なし整数として右にシフトし、自分自身を返します。
つまり、一番左は0が入ります。
operator[] reference& operator[](sizt_t i) i番目の要素の参照を返します。
iが無効な場合の動作は未定義です。

コンストラクタ
書 式 説 明
bitset()
例) bitset<48> bit1();

48bitsからなるbitset(要素はすべて0)を定義して、bit1とする。
bitset(unsigned long& ul)
例) bitset<32> bit2((unsigned long)0xFFFFFFFF);
例) bitset<48> bit3(unsigned long)0xFFFFFFFF);

すべて1の32bitsからなるbitsetを作成し、bit2とする
000000000000000011111111111111111111111111111111というbitsetを作り、bit3とする。
bitset(const string& s, size_t pos = 0, size_t n = -1)
例) bitset<8> bit4((string)"00110110");
strからbitsetを作ります。
00110110というbitsetを作り、bit4とする。

  なお、stringクラスについては後述します。

  次のページでは実際に使ってみます。


←前ページへ :  トップへ :  次ページへ→