이 글에서는 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() 함수는 별도의 복사 없이 컨테이너 간 데이터를 효율적으로 교환할 때 유용하게 활용됩니다.