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

C++ STL multimap::begin()과 multimap::end() 함수 완벽 가이드

이 글에서는 C++ STL에서 multimap::begin()과 multimap::end() 함수의 동작 원리, 문법, 그리고 실제 예제를 자세히 살펴봅니다.

C++ STL의 multimap이란?

multimap은 map 컨테이너와 유사한 연관 컨테이너(associative container)입니다. 키(key)와 매핑된 값(mapped value)의 조합으로 구성된 요소들을 특정 순서로 저장하며, map과 달리 동일한 키에 여러 개의 요소를 연결할 수 있습니다. 내부적으로 데이터는 항상 연관된 키를 기준으로 정렬되어 관리됩니다.

multimap::begin()이란?

multimap::begin()은 C++ STL에 내장된 함수로, <map> 헤더 파일에 정의되어 있습니다. begin()은 multimap 컨테이너의 가장 첫 번째 요소에 접근할 때 사용합니다.

이 함수는 컨테이너의 첫 번째 요소를 가리키는 반복자(iterator)를 반환합니다. 단, 컨테이너가 비어 있으면 반환된 반복자를 역참조(dereference)할 수 없습니다.

문법

multimap_name.begin();

매개변수

이 함수는 어떤 매개변수도 받지 않습니다.

반환 값

map 컨테이너의 첫 번째 값을 가리키는 반복자를 반환합니다.

입력

std::multimap<char, int> mymap;
mymap.insert({'a', 10});
mymap.insert({'b', 20});
mymap.insert({'c', 30});
mymap.begin();

출력

a:10

예제: multimap::begin()

#include <bits/stdc++.h>
using namespace std;
int main(){
    multimap<int, int> mul;
    // multimap에 요소 삽입
    mul.insert({ 1, 10 });
    mul.insert({ 2, 20 });
    mul.insert({ 3, 30 });
    mul.insert({ 4, 40 });
    mul.insert({ 5, 50 });
    // multimap의 첫 번째 쌍(pair) 가져오기
    auto i = mul.begin();
    cout<<"First element in multimap is: ";
    cout << "{" << i->first << ", " << i->second << "}\n";
    // multimap 전체 요소 출력
    cout << "\nElements in multimap is : \n";
    cout << "KEY\tELEMENT\n";
    for (auto it = mul.begin(); it!= mul.end(); ++it){
        cout << it->first << '\t' << it->second << '\n';
    }
    return 0;
}

실행 결과

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

First element in multimap is: {1, 10}
Elements in multimap is :
KEY ELEMENT
1 10
2 20
3 30
4 40
5 50

multimap::end()란?

multimap::end() 역시 C++ STL에 내장된 함수로, <map> 헤더 파일에 정의되어 있습니다. end()는 multimap 컨테이너의 마지막 요소 다음 위치(past-the-last element)에 접근할 때 사용합니다.

이 함수는 컨테이너의 마지막 요소 바로 다음을 가리키는 반복자를 반환합니다. 컨테이너가 비어 있으면 이 반복자 역시 역참조할 수 없습니다.

일반적으로 begin()과 end()는 함께 사용되어 컨테이너의 순회 범위(range)를 지정하며, 이를 통해 map 컨테이너의 모든 요소를 차례대로 탐색할 수 있습니다.

문법

multimap_name.end();

매개변수

이 함수는 어떤 매개변수도 받지 않습니다.

반환 값

컨테이너의 마지막 요소 다음 위치를 가리키는 반복자를 반환합니다. 이 위치에는 실제 요소가 존재하지 않으므로 역참조해서는 안 됩니다.

입력

std::multimap<char, int> mymap;
mymap.insert({'a', 10});
mymap.insert({'b', 20});
mymap.insert({'c', 30});
mymap.end();

출력

error

end()가 가리키는 위치에는 유효한 요소가 없으므로, 이를 역참조해 출력하려고 하면 오류가 발생합니다.

예제: multimap::end()

#include <bits/stdc++.h>
using namespace std;
int main(){
    multimap<int, int> mul;
    // multimap에 요소 삽입
    mul.insert({ 1, 10 });
    mul.insert({ 2, 20 });
    mul.insert({ 3, 30 });
    mul.insert({ 4, 40 });
    mul.insert({ 5, 50 });
    // multimap 전체 요소 출력
    cout << "\nElements in multimap is : \n";
    cout << "KEY\tELEMENT\n";
    for (auto it = mul.begin(); it!= mul.end(); ++it){
        cout << it->first << '\t' << it->second << '\n';
    }
    return 0;
}

실행 결과

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

Elements in multimap is :
KEY ELEMENT
1 10
2 20
3 30
4 40
5 50