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

C++ STL map count() 함수 완벽 정리: 키 존재 여부 확인 방법

이 글에서는 C++ STL에서 자주 사용되는 map::count() 함수의 동작 원리, 문법, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.

C++ STL에서 Map(맵)이란?

맵(Map)은 연관 컨테이너(Associative Container)의 일종으로, 키(Key)와 값(Value)의 쌍으로 이루어진 요소들을 정렬된 순서로 저장할 수 있게 해주는 자료구조입니다. 맵 컨테이너 내부에서 데이터는 항상 연관된 키를 기준으로 자동 정렬되며, 각 요소는 고유한 키를 통해서만 접근할 수 있습니다.

map::count() 함수란?

map::count()<map> 헤더 파일에 포함된 멤버 함수로, 특정 키를 가진 요소의 개수를 세는 역할을 합니다. 맵에서는 키가 중복될 수 없기 때문에, 해당 키가 컨테이너에 존재하면 1을, 존재하지 않으면 0을 반환합니다. 따라서 주로 키의 존재 여부를 확인할 때 유용하게 사용됩니다.

문법(Syntax)

map_name.count(key n);

매개변수(Parameter)

이 함수는 하나의 매개변수 n을 받으며, 이는 컨테이너에서 찾고자 하는 키를 의미합니다.

반환값(Return Value)

키가 컨테이너에 존재하면 1을, 존재하지 않으면 0을 반환합니다. 즉, 불리언(Boolean) 값처럼 조건문에서 활용할 수 있습니다.

입력 예시 (키, 요소)

(2,70), (3,30), (4,90), (5,100)

출력 결과

Key 5 is present.
Key 6 is not present.
2,11
3,26
1,66
4,81
Key 2 is present.
Key 8 is not present.

활용 접근 방법

다음과 같은 단계를 거쳐 count() 함수를 활용할 수 있습니다.

  • 먼저 맵 컨테이너를 초기화합니다.

  • 키와 함께 요소를 삽입합니다.

  • 찾고자 하는 키가 컨테이너에 존재하는지 확인합니다.

위 방법 외에도 다음과 같은 접근 방식을 사용할 수 있습니다.

  • 먼저 맵 컨테이너를 초기화합니다.

  • 키와 함께 요소를 삽입합니다.

  • 첫 번째 요소부터 마지막 요소까지 반복문을 실행합니다.

  • 반복문 안에서 원하는 키가 존재하는지 검사합니다.

두 번째 방법은 주로 알파벳 순서로 저장된 요소를 다룰 때 유용하며, 반복 과정에서 각 키의 존재 여부를 출력으로 확인할 수 있습니다.

예제 1: 정수형 키 확인하기

// C++ 코드로 map count() 함수의 동작 살펴보기
#include <iostream>
#include <map>
using namespace std;

int main() {
    map<int, int> mp;
    mp.insert({1, 40});
    mp.insert({3, 20});
    mp.insert({2, 30});
    mp.insert({5, 10});
    mp.insert({4, 50});

    if (mp.count(1))
        cout << "The Key 1 is present\n";
    else
        cout << "The Key 1 is not present\n";

    if (mp.count(7))
        cout << "The Key 7 is Present \n";
    else
        cout << "The Key 7 is not Present\n";

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

The Key 1 is present
The Key 7 is not present

예제 2: 문자형 키 확인하기

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<char, int> mp;
    char i;
    mp['a'] = 2;
    mp['c'] = 3;
    mp['e'] = 1;

    for (i = 'a'; i < 'f'; i++) {
        cout << i;
        if (mp.count(i) > 0)
            cout << " is an element of mp.\n";
        else
            cout << " is not an element of mp.\n";
    }
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

a is an element of mp.
b is not an element of mp.
c is an element of mp.
d is not an element of mp.
e is an element of mp.
f is not an element of mp.

마무리 및 참고 사항

map::count() 함수는 내부적으로 이진 탐색 트리(레드-블랙 트리) 기반으로 구현되어 있어 시간 복잡도는 O(log n)입니다. 또한 맵의 키는 고유하므로 count()의 반환값은 항상 0 또는 1입니다. 키 존재 여부를 확인하는 또 다른 방법으로는 find() 함수를 사용하는 것이 있으며, find()는 해당 요소의 반복자(iterator)를 반환하므로 키뿐만 아니라 값에도 바로 접근해야 할 때 더욱 유용합니다.