이 글에서는 C++ STL의 multimap::swap() 함수가 어떻게 동작하는지, 그리고 그 문법과 실제 예제를 통해 자세히 살펴보겠습니다.
C++ STL에서 멀티맵(Multimap)이란?
멀티맵(multimap)은 맵(map) 컨테이너와 유사한 연관 컨테이너(associative container)입니다. 키(key)와 매핑된 값(mapped value)의 조합으로 이루어진 요소들을 특정 순서에 따라 저장할 수 있습니다. 일반적인 map과 달리, multimap에서는 동일한 키를 가진 여러 개의 요소가 존재할 수 있다는 점이 가장 큰 특징입니다. 또한 내부적으로 데이터는 항상 키를 기준으로 정렬된 상태로 유지됩니다.
multimap::swap()이란?
multimap::swap()은 C++ STL에 내장된 함수로, <map> 헤더 파일에 정의되어 있습니다. 이 함수는 두 multimap 컨테이너의 내용을 서로 교환(swap)하는 데 사용됩니다. 두 컨테이너의 크기가 서로 다르더라도 전혀 문제없이 내용물을 맞바꿀 수 있습니다.
함수가 호출되면 인자로 전달받은 다른 multimap 컨테이너와 현재 컨테이너의 내용을 서로 교환합니다.
문법
multimap_name.swap(multimap& multimap_name2);
매개변수
이 함수는 다음과 같은 매개변수를 받습니다.
multimap_name2 − 현재 multimap 컨테이너와 내용을 교환하고자 하는 다른 multimap 컨테이너 객체입니다.
반환 값
이 함수는 아무것도 반환하지 않습니다(void).
입력
std::multimap<char, int> odd, eve;
odd.insert({'a', 1});
odd.insert({'b', 3});
odd.insert({'c', 5});
eve.insert({'d', 2});
eve.insert({'e', 4});
eve.insert({'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,char> mul_1;
multimap<int,char> mul_2;
// 요소를 순회하기 위한 반복자 선언
multimap<int,char>::iterator i;
// multimap1에 요소 삽입
mul_1.insert(make_pair(0,'a'));
mul_1.insert(make_pair(1,'b'));
mul_1.insert(make_pair(2,'c'));
mul_1.insert(make_pair(3,'d'));
// multimap2에 요소 삽입
mul_2.insert(make_pair(4,'e'));
mul_2.insert(make_pair(5,'f'));
mul_2.insert(make_pair(6,'g'));
// 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: 4 e 5 f 6 g Elements in multimap2 are: 0 a 1 b 2 c 3 d