C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのbitset::all()関数とは?使い方とサンプルコードをわかりやすく解説

bitset::all() は、C++ の標準テンプレートライブラリ(STL)に組み込まれている関数の一つです。この関数はブール値(bool)を返し、呼び出したビットセットのすべてのビットが 1 であれば true を、1 つでも 0 のビットがあれば false を返します。

引数(パラメータ)は一切受け取らず、単純にブール値のみを返すシンプルな関数です。すべてのビットが立っているかどうかを一発で判定できるため、フラグ管理や状態チェックなどの場面で便利です。

構文

bool bitset_name.all();

戻り値

  • true:ビットセット内の全ビットが 1 の場合
  • false:0 のビットが 1 つでも存在する場合

動作例

Bitset = 100101

この場合の出力は以下のようになります。

false

これは、ビットセットの中に 0 のビットが含まれているためです。true を返すには、セット内のすべてのビットが 1 である必要があります。

サンプルコード

#include <bits/stdc++.h>
using namespace std;

void printer(bool val){
    if(val){
        cout << "The bitset has all bits set" << endl;
    } else {
        cout << "The bitset does not have all bits set" << endl;
    }
}

int main() {
    bitset<4> bit1(string("1011"));
    bitset<6> bit2(string("111111"));

    cout << "The bitset is " << bit1 << endl;
    printer(bit1.all());

    cout << "The bitset is " << bit2 << endl;
    printer(bit2.all());

    return 0;
}

実行結果

The bitset is 1011
The bitset does not have all bits set
The bitset is 111111
The bitset has all bits set

コードの解説

  • bit1(1011):4 ビット中 3 番目のビットが 0 であるため、all()false を返します。
  • bit2(111111):6 ビットすべてが 1 であるため、all()true を返します。

このように、bitset::all() を使えば、ループで各ビットを手動確認する必要がなく、簡潔なコードで「全ビットが立っているか」を判定できます。なお、C++11 以降で利用可能な関数なので、古いコンパイラを使用する場合は注意が必要です。

  1. C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説

    cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引

  2. C++ STLのsinh()関数の使い方を徹底解説

    sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin