Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL count_if() 함수 완벽 정리 – 개념, 문법, 예제까지


이 글에서는 C++ STL에서 제공하는 std::count_if() 함수의 동작 원리, 문법, 그리고 실제 사용 예제를 자세히 알아보겠습니다.

std::count_if()란 무엇인가?

std::count_if()는 C++ 표준 라이브러리(STL)에 내장된 함수로, <algorithm> 헤더 파일에 정의되어 있습니다. 이 함수는 지정된 범위 내에서 특정 조건을 만족하는 요소의 개수를 구할 때 사용됩니다.

함수가 반환하는 값은 정수형으로, 주어진 범위에서 조건을 충족하는 요소의 총 개수를 의미합니다.

즉, count_if()는 단순히 범위를 순회하는 것에 그치지 않고, 각 요소마다 조건문을 평가하여 해당 조건이 참(true)인 횟수를 세고 그 결과를 반환합니다.

문법

count_if(start, end, condition);

매개변수

이 함수는 다음과 같은 매개변수를 받습니다.

  • start, end − 탐색할 범위를 지정하는 반복자(iterator)입니다. start는 범위의 시작 위치를, end는 범위의 끝 위치를 나타냅니다.
  • condition − 검사하고자 하는 조건입니다. 조건은 주어진 범위의 각 요소에 적용되는 단항 함수(unary function) 형태여야 합니다.

반환 값

주어진 범위 내에서 조건을 만족하는 요소의 개수를 반환합니다.

예제 1: 기본 동작 이해하기

입력

bool iseve(int i){ return ((i%2)==0); }
int a = count_if( vect.begin(), vect.end(), iseve ); /* vect에는 1부터 10까지의 정수 10개가 저장되어 있음 */

출력

even numbers = 2 4 6 8 10

위 예제에서 iseve 함수는 짝수 여부를 판별하며, count_if()는 벡터 전체를 순회하며 짝수의 개수를 계산합니다.

예제 2: 홀수 개수 세기

#include <bits/stdc++.h>
using namespace std;
bool check_odd(int i){
    if (i % 2 != 0)
        return true;
    else
        return false;
}
int main() {
    vector<int> vec;
    for (int i = 0; i < 10; i++){
        vec.push_back(i);
    }
    int total_odd = count_if(vec.begin(), vec.end(), check_odd);
    cout<<"Number of odd is: "<<total_odd;
    return 0;
}

출력

Number of odd is: 5

이 코드는 0부터 9까지의 정수를 벡터에 저장한 뒤, check_odd 함수를 조건으로 사용하여 홀수의 개수를 세는 프로그램입니다. 실행 결과 0~9 사이의 홀수는 1, 3, 5, 7, 9로 총 5개이므로 5가 출력됩니다.

정리

std::count_if()는 조건 기반으로 컨테이너의 요소를 손쉽게 필터링하여 개수를 셀 수 있는 강력한 도구입니다. 람다 함수(lambda)와 함께 사용하면 별도의 함수 정의 없이도 간결하게 활용할 수 있어 실무에서 유용하게 쓰입니다.