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

C++のlogical_andとは?構文・テンプレートパラメータ・使用例を解説


この記事では、C++のlogical_and関数オブジェクトクラスの仕組み、構文、および具体的な使用例について詳しく解説します。

logical_andとは?

logical_andは、C++に標準で組み込まれている二項関数オブジェクトクラスの一つで、<functional>ヘッダーファイル内で定義されています。logical_andは、2つの引数を受け取り、その論理AND(論理積)演算の結果を返す二項関数オブジェクトです。

論理ANDとは、2つのブール値がどちらもtrueである場合にのみtrueを返す二項演算のことです。片方でもfalseであれば、結果はfalseになります。

logical_andの構文

template <class T>
struct logical_and : binary_function<T, T, bool> {
    bool operator() (const T& a, const T& b) const {
        return a && b;
    }
};

テンプレートパラメータ

この関数オブジェクトは、以下のパラメータを受け取ります。

  • T − 関数呼び出し時に渡される引数の型を表します。

使用例

以下の例では、transform関数と組み合わせて、2つのbool型配列の対応する要素同士に論理AND演算を適用しています。

#include <bits/stdc++.h>
using namespace std;
int main(){
    bool a[] = { true, false, true, false, true };
    bool b[] = { true, true, false, false, true };
    int ele = 5;
    bool output[ele];
    transform(a, a + ele, b, output, logical_and<bool>());
    cout<<"The result for Logical AND is: \n";
    for (int i = 0; i < ele; i++){
        cout << a[i] << " AND " << b[i] << " is: " <<output[i] << "\n";
    }
    return 0;
}

実行結果

上記のコードを実行すると、以下の出力が生成されます。

The result for Logical AND is:
1 AND 1 is: 1
0 AND 1 is: 0
1 AND 0 is: 0
0 AND 0 is: 0
1 AND 1 is: 1

出力結果からわかるように、両方の値が1(true)である場合のみ結果が1(true)となり、それ以外の組み合わせではすべて0(false)が返されます。このように、logical_andtransformなどの標準アルゴリズムと組み合わせることで、配列やコンテナの要素に対して簡潔に論理演算を適用することができます。

  1. C++の演算子の種類を徹底解説!算術・関係・論理・ビット演算子の使い方まとめ

    C++には多くの種類の演算子(オペレーター)が用意されています。これらは大きく分けて、算術演算子、関係演算子、論理演算子、ビット演算子、代入演算子、そしてその他の演算子に分類できます。この記事では、それぞれの演算子の役割と具体的な使用例をわかりやすく解説します。算術演算子(Arithmetic Operators)変数Aが10、変数Bが20という値を持っていると仮定します。演算子説明+加算:2つのオペランドを足し合わせます。例:A + B → 30-減算:第1オペランドから第2オペランドを引きます。例:A - B → -10*乗算:2つのオペランドを掛け合わせます。例:A * B → 200/

  2. C++のブールリテラルとは?trueとfalseの基本と使い方を解説

    ブールリテラル(Boolean literals)とは、「真(true)」または「偽(false)」のいずれかの意味を持つリテラルのことです。C++におけるブールリテラルは true と false の2種類のみ存在し、これらは bool 型として扱われます。bool 型の変数には、この2つの値のどちらかを代入できます。条件分岐やループの判定など、プログラムのロジック制御において非常に重要な役割を果たします。ブールリテラルの使用例以下のコードでは、bool 型の変数に true を代入し、if文でその値を判定しています。#include<iostream> using namesp