이 글에서는 C++의 logical_and 함수 객체 클래스가 어떻게 동작하는지, 그리고 그 문법과 실제 사용 예제를 자세히 알아보겠습니다.
logical_and란 무엇인가?
logical_and는 C++에 내장된 이진(binary) 함수 객체 클래스로, <functional> 헤더 파일에 정의되어 있습니다. 이 함수 객체는 두 개의 인자를 받아 두 값 사이의 논리 AND 연산 결과를 반환하는 역할을 합니다.
논리 AND는 두 피연산자가 모두 참(true)일 때만 참을 반환하고, 그 외의 경우에는 거짓(false)을 반환하는 이진 연산입니다.
logical_and의 문법
Template struct logical_and : binary_function
{
T operator() (const T& a, const T& b) const {return a&&b; }
};템플릿 매개변수
이 함수 객체는 다음 매개변수를 받습니다.
- T − 함수 호출 시 전달되는 인자의 데이터 타입을 나타냅니다.
사용 예제
#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
정리
logical_and는 STL 알고리즘인 transform과 함께 사용하면 두 배열(또는 컨테이너)의 요소들을 손쉽게 비교하여 논리 AND 연산을 수행할 수 있는 강력한 도구입니다. 불리언 값뿐만 아니라 비교 가능한 다양한 타입에도 활용할 수 있어, 조건 조합이나 필터링 로직을 구현할 때 유용하게 사용됩니다.