count, count_if 함수

<algorithm> 에 정의됨

template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type count(
  InputIterator first, InputIterator last, const T& val);

template <class ExecutionPolicy, class ForwardIt, class UnaryPredicate>
typename iterator_traits<ForwardIt>::difference_type count_if(
  ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, UnaryPredicate p);

범위 안의 원소들 중 특정 값(count) 과 일치하거나 특정 조건을 만족하는 원소(count_if)의 개수를 센다.

count

범위 안 (first 부터 last 전 까지) 의 원소들 중 val 과 일치하는 원소들의 개수를 셉니다. 이 때 원소를 비교하기 위해 operator== 를 사용합니다.

count_if

범위 안 (first 부터 last 전 까지) 의 원소들 중 p 가 참을 리턴하는 원소들의 개수를 셉니다. 다시 말해 원소 e 에 대해 p(e) 를 실행하였을 때, 참을 리턴하는 원소들의 개수를 셉니다.

인자들

리턴값

val 과 일치하거나 조건을 만족하는 원소의 개수를 리턴합니다. 리턴 타입은 iterator_traits<InputIterator>::difference_type 로 보통 부호 있는 정수 타입입니다.

구현 예시

count

template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type count(
  InputIterator first, InputIterator last, const T& val) {
  typename iterator_traits<InputIterator>::difference_type ret = 0;
  while (first != last) {
    if (*first == val) ++ret;
    ++first;
  }
  return ret;
}

count_if