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

C++ STL map::emplace_hint() 함수 완벽 가이드

이 글에서는 C++ STL의 map::emplace_hint() 함수에 대해 동작 방식, 구문, 그리고 실제 예제를 통해 자세히 살펴보겠습니다.

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

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

map::emplace_hint()란?

map::emplace_hint()는 <map> 헤더 파일에 포함된 함수로, 힌트(hint) 정보를 활용하여 맵 컨테이너에 새 요소를 생성하고 삽입합니다.

emplace_hint()는 삽입하려는 요소의 키가 고유한 경우에만 새 요소를 삽입합니다. 즉, 동일한 키를 가진 요소가 이미 컨테이너에 존재하지 않을 때만 삽입이 수행됩니다.

구문

map_name.emplace_hint(iterator it, Args&& args);

매개변수

이 함수는 다음과 같은 매개변수를 받습니다.

it − 삽입될 요소의 위치를 나타내는 힌트 역할을 하는 반복자(iterator)입니다.

args − 위치 "it"에 배치(emplace)하려는 인수 또는 값입니다.

반환 값

삽입이 성공하면 함수는 새로 삽입된 요소를 가리키는 반복자를 반환합니다. 삽입이 실패하는 경우, 즉 동일한 키를 가진 요소가 이미 존재하면 해당 기존 요소를 가리키는 반복자를 반환합니다.

예제

입력

map<char, int> newmap;
emplace_hint(newmap.end(), 'a', 1);

출력

a

전체 코드 예제

#include <bits/stdc++.h>
using namespace std;
int main() {
    map<int, int> TP_Map;
    TP_Map.emplace_hint(TP_Map.begin(), 4, 50);
    TP_Map.emplace_hint(TP_Map.begin(), 2, 30);
    TP_Map.emplace_hint(TP_Map.begin(), 1, 10);
    cout<<"TP Map is : \n";
    cout << "MAP_KEY\tMAP_ELEMENT\n";
    for (auto i = TP_Map.begin(); i!= TP_Map.end(); i++)
        cout << i->first << "\t" << i->second << endl;
    return 0;
}

출력 결과

TP Map is:
MAP_KEY    MAP_ELEMENT
1          10
2          30
4          50

위 예제에서는 힌트로 begin() 반복자를 전달했지만, 맵은 항상 키를 기준으로 자동 정렬되기 때문에 최종 출력 결과는 키의 오름차순(1, 2, 4)으로 정렬되어 있습니다. 힌트가 실제 삽입 위치와 가까우면 삽입 성능이 향상될 수 있으며, 힌트가 부정확하더라도 프로그램의 정확성에는 영향을 주지 않습니다.