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

C++ STL 멀티맵(multimap) swap() 함수 완벽 정리

이 글에서는 C++ STL에서 제공하는 multimap::swap() 함수의 동작 방식, 문법, 그리고 실제 예제 코드를 통해 자세히 살펴보겠습니다.

C++ STL에서 멀티맵(Multimap)이란?

멀티맵은 map 컨테이너와 유사한 연관 컨테이너(associative container)입니다. 키(key)와 값(value)이 쌍을 이루는 요소들을 특정한 순서에 따라 저장할 수 있으며, 일반 map과 달리 동일한 키를 가진 여러 개의 요소를 허용한다는 점이 특징입니다. 내부적으로 데이터는 항상 키를 기준으로 자동 정렬되어 관리됩니다.

multimap swap() 함수란?

multimap::swap()은 C++ 표준 라이브러리의 <map> 헤더 파일에 정의된 내장 함수로, 두 멀티맵 컨테이너의 내용물을 서로 교환하는 역할을 합니다.

이 함수의 장점은 두 컨테이너의 크기가 서로 다르더라도 문제없이 전체 내용을 맞바꿀 수 있다는 점입니다. 함수가 호출되면 인자로 전달된 다른 멀티맵 컨테이너와 현재 컨테이너의 모든 요소를 교환합니다.

문법(Syntax)

multimap_name.swap(multimap& multimap_name2);

매개변수(Parameters)

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

  • map_name2 − 현재 멀티맵 컨테이너와 내용을 교환하고자 하는 다른 멀티맵 컨테이너 객체입니다.

반환값(Return Value)

이 함수는 아무 값도 반환하지 않습니다(void). 단순히 두 컨테이너의 내용만 교환합니다.

간단한 사용 예시

입력

std::multimap<char, int> odd, eve;
odd.insert(make_pair('a', 1));
odd.insert(make_pair('b', 3));
odd.insert(make_pair('c', 5));
eve.insert(make_pair('d', 2));
eve.insert(make_pair('e', 4));
eve.insert(make_pair('f', 6));
odd.swap(eve);

출력

Odd: d: 2 e: 4 f: 6
Eve: a: 1 b: 3 c: 5

전체 예제 코드

#include<iostream>
#include<map>
using namespace std;
int main(){
    multimap<int,int > mul_1;
    multimap<int,int> mul_2;
    // 요소를 순회하기 위한 반복자 선언
    multimap<int,int>:: iterator i;
    // 첫 번째 멀티맵에 요소 삽입
    mul_1.insert({1,10});
    mul_1.insert({2,20});
    mul_1.insert({3,30});
    mul_1.insert({4,40});
    mul_1.insert({5,50});
    // 두 번째 멀티맵에 요소 삽입
    mul_2.insert({6,60});
    mul_2.insert({7,70});
    mul_2.insert({8,80});
    mul_2.insert({9,90});
    // swap 호출로 두 컨테이너의 요소 교환
    mul_1.swap(mul_2);
    // multimap1의 요소 출력
    cout<<"Elements in multimap1 are: "<<"\n";
    for( i = mul_1.begin(); i!= mul_1.end(); i++){
        cout<<(*i).first<<" "<< (*i).second << "\n";
    }
    // multimap2의 요소 출력
    cout<<"\nElements in multimap2 are: ";
    for( i = mul_2.begin(); i!= mul_2.end(); i++){
        cout<<(*i).first<<" "<<(*i).second << "\n";
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

Elements in multimap1 are:
6 60
7 70
8 80
9 90
Elements in multimap2 are:
1 10
2 20
3 30
4 40
5 50

결과를 보면 swap() 호출 이후 mul_1에는 원래 mul_2에 있던 요소들이, mul_2에는 원래 mul_1에 있던 요소들이 들어있는 것을 확인할 수 있습니다. 이처럼 swap() 함수는 별도의 복사 없이 컨테이너 간 데이터를 효율적으로 교환할 때 유용하게 활용됩니다.