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

C++ STL set::count() 함수 완벽 정리: 문법, 동작 원리, 반환값까지 한눈에

이 글에서는 C++ STL의 set::count() 함수에 대해 자세히 알아보겠습니다. 함수의 문법, 동작 방식, 그리고 반환값까지 예제와 함께 살펴봅니다.

C++ STL에서 set이란 무엇인가?

C++ STL에서 set(집합)은 고유한(unique) 요소들만을 정렬된 순서로 저장하는 컨테이너입니다. set의 요소 값 자체가 곧 해당 요소를 식별하는 키 역할을 하기 때문에 중복된 값을 가질 수 없습니다.

한 번 set 컨테이너에 추가된 값은 나중에 수정할 수 없지만, 값을 제거하거나 새로 추가하는 것은 언제든 가능합니다. 내부적으로 set은 이진 탐색 트리(binary search tree)로 구현되어 있어 빠른 검색 성능을 제공합니다.

set::count()란 무엇인가?

count() 함수는 C++ STL에 내장된 함수로, 헤더 파일에 정의되어 있습니다. 이 함수는 함수와 연결된 set 컨테이너 안에서 인자로 전달된 값이 몇 번 등장하는지 세는 역할을 합니다.

set에는 모든 값이 고유하기 때문에 특정 값은 최대 한 번만 존재합니다. 따라서 이 함수가 반환할 수 있는 값은 0 또는 1, 단 두 가지뿐입니다.

문법(Syntax)

name_of_set.count(const type_t& value);

매개변수(Parameter)

이 함수는 매개변수를 하나만 받습니다. 바로 set 컨테이너에서 찾고자 하는 값입니다.

반환값(Return Value)

반환값은 다음 두 가지 중 하나입니다.

  • 0: 해당 값이 컨테이너에 존재하지 않는 경우
  • 1: 해당 값이 컨테이너에 존재하는 경우

예제 1

Input: set <int> myset = {1, 2, 3, 4, 6};
   myset.count(2);
Output: 1
Input: set<int> myset = {1, 2, 3, 4, 6};
   myset.count(5);
Output: 0

첫 번째 입력에서 값 2는 set에 존재하므로 1을 반환하고, 두 번째 입력에서 값 5는 set에 없으므로 0을 반환합니다.

예제 2: 실전 코드

#include <bits/stdc++.h>
using namespace std;
int main(){
   int arr[] = {2, 4, 2, 5, 6, 7};
   set<int> ch(arr, arr + 6);
   // check if 2 is present
   if (ch.count(2))
   cout<<"2 is present\n";
   else
      cout<<"2 is not present\n";
   // checks if 4 is present
   if (ch.count(9))
      cout<<"9 is present\n";
   else
      cout<<"9 is not present\n";
   return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

2 is present
9 is not present

배열 {2, 4, 2, 5, 6, 7}로 set을 생성하면 중복된 2는 하나만 저장됩니다. 따라서 ch.count(2)는 1을 반환해 "2 is present"가 출력되고, set에 없는 9를 검사하면 0을 반환해 "9 is not present"가 출력됩니다.

마무리

set::count()는 특정 값의 존재 여부를 확인하는 간단하면서도 유용한 함수입니다. 반환값이 0 또는 1로 제한되기 때문에 조건문과 함께 사용하면 코드를 깔끔하게 작성할 수 있습니다. 참고로 C++20부터는 contains() 멤버 함수가 추가되어 더 직관적인 방식으로 존재 여부를 확인할 수도 있습니다.