이 글에서는 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() 멤버 함수가 추가되어 더 직관적인 방식으로 존재 여부를 확인할 수도 있습니다.