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

C++ STL map::upper_bound() 함수 완벽 가이드 – 문법, 매개변수, 예제 총정리

이 글에서는 C++ STL의 map::upper_bound() 함수가 어떻게 동작하는지, 그리고 문법과 실제 활용 예제를 통해 자세히 알아보겠습니다.

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

맵은 연관 컨테이너(associative container)의 일종으로, 키(key)와 매핑된 값(mapped value)의 조합으로 이루어진 요소들을 특정 순서에 따라 저장합니다. 맵 컨테이너 내부의 데이터는 항상 키를 기준으로 자동 정렬되며, 저장된 값은 각각의 고유한 키를 통해서만 접근할 수 있습니다.

map::upper_bound() 함수란?

map::upper_bound()는 C++ STL에 내장된 함수로, <map> 헤더 파일에 정의되어 있습니다. 이 함수는 맵 컨테이너에서 인자로 전달된 키 k보다 큰 값을 가진 첫 번째 요소를 가리키는 반복자(iterator)를 반환합니다. 즉, 키 k 바로 '다음'에 위치하는 요소를 찾을 때 유용하게 사용됩니다.

문법(Syntax)

Map_name.upper_bound(key& k);

매개변수(Parameter)

이 함수는 단 하나의 매개변수만 받습니다.

  • k − 검색하고자 하는 키입니다.

반환값(Return Value)

함수는 키 k 다음에 위치한다고 간주되는 요소, 즉 k보다 큰 첫 번째 키를 가진 요소를 가리키는 반복자를 반환합니다.

예제 1: 기본 사용법

입력

map<char, int> newmap;
newmap['a'] = 1;
newmap['b'] = 2;
newmap['c'] = 3;
newmap.upper_bound('b');

출력

c : 3

위 예제에서 키 'b'의 상한(upper bound)은 'b'보다 큰 첫 번째 키인 'c'이므로, 해당 요소인 c : 3이 반환됩니다.

예제 2: 전체 코드 구현

#include <bits/stdc++.h>
using namespace std;
int main() {
    map<int, int> TP_Map;
    TP_Map.insert({5, 50});
    TP_Map.insert({2, 30});
    TP_Map.insert({1, 10});
    TP_Map.insert({4, 70});
    cout<<"\nTP Map is : \n";
    cout << "MAP_KEY\tMAP_ELEMENT\n";
    for (auto i = TP_Map.rbegin(); i!= TP_Map.rend(); i++) {
        cout << i->first << "\t" << i->second << endl;
    }
    auto i = TP_Map.upper_bound(2);
    cout << "The upper bound of key 2 is ";
    cout << i->first << " " << i->second << endl;
    auto i_1 = TP_Map.upper_bound(3);
    cout << "The upper bound of key 3 is ";
    cout << i_1->first << " " << i_1->second << endl;
    return 0;
}

출력

TP Map is:
MAP_KEY    MAP_ELEMENT
5           50
4           70
2           30
1           10
The upper bound of key 2 is 4 :70
The upper bound of key 3 is 4 :70

결과 분석

맵에는 키 1, 2, 4, 5가 저장되어 있습니다. 키 2의 upper_bound를 조회하면 2보다 큰 첫 번째 키인 4가 반환되고, 키 3의 경우 맵에 존재하지 않지만 3보다 큰 첫 번째 키 역시 4이므로 동일한 결과가 출력됩니다. 이처럼 upper_bound()는 해당 키가 맵에 존재하지 않더라도, 그보다 큰 첫 번째 키를 가진 요소를 정확히 찾아줍니다.