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

C++ STL multimap::insert() 함수 완벽 가이드 – 문법과 예제 총정리

이 글에서는 C++ STL에서 multimap::insert() 함수의 동작 방식, 문법, 그리고 실제 활용 예제까지 자세히 살펴보겠습니다.

C++ STL에서 multimap이란?

multimap은 map 컨테이너와 유사한 연관 컨테이너(associative container)입니다. 키(key)와 값(value)이 한 쌍을 이루는 요소들을 특정 순서로 저장하며, 데이터는 내부적으로 항상 키를 기준으로 정렬됩니다.

map과의 가장 큰 차이점은 multimap은 동일한 키를 가진 여러 개의 요소를 저장할 수 있다는 점입니다.

multimap::insert()란?

multimap::insert()는 C++ STL에 내장된 함수로, <map> 헤더 파일에 정의되어 있습니다. 이 함수는 multimap 컨테이너에 새로운 값을 삽입하는 데 사용되며, 삽입된 요소 수만큼 컨테이너의 크기가 증가합니다.

일반 map은 이미 존재하는 키에 대해서는 새 요소를 삽입하지 않지만, multimap은 같은 키에 여러 요소를 연결할 수 있는 특징이 있습니다.

따라서 요소를 삽입할 때마다 해당 요소는 자신의 키에 맞는 적절한 위치에 자동으로 배치됩니다.

문법(Syntax)

multiMap_name.insert({key& k, value_type& val});

또는

multiMap_name.insert(iterator& it, {key& k, value_type& val});

또는

multiMap_name.insert(iterator& position1, iterator& position2);

또는

multimap_name.insert(initializer_list<value_type> il);

매개변수(Parameter)

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

  • k − 삽입할 요소와 연결될 키입니다. multimap에서는 같은 키가 이미 존재하더라도 요소가 정상적으로 삽입됩니다.

  • val − 삽입하고자 하는 값입니다.

  • it − 요소를 삽입할 위치를 지정하는 데 사용되는 반복자(iterator)입니다.

  • position1, position2 − 여러 요소를 한 번에 삽입할 때 사용하는 범위입니다. position1은 시작 위치, position2는 끝 위치를 나타냅니다.

  • il − 컨테이너를 초기화할 요소들을 담고 있는 초기화 리스트(initializer list)입니다.

반환값(Return Value)

이 함수는 새로 삽입된 요소를 가리키는 반복자(iterator)를 반환합니다.

입력

multimap<int, char> mymap;
mymap.insert({1, 'a'});
mymap.insert({2, 'b'});

출력

1: a
2: b

예제 1: 기본적인 요소 삽입

// 주어진 키와 함께 요소 삽입하기

#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 << "Elements 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

예제 2: 특정 위치에 요소 삽입

// 주어진 키 뒤에 요소 삽입하기
#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({ 5, 40 });
   mul.insert({ 6, 50 });
   // 삽입 기준이 될 위치 탐색
   auto i = mul.find(3);
   mul.insert(i, { 4, 90 });
   // 요소 출력
   cout << "KEY\tELEMENT\n";
   for (auto itr = mul.begin(); itr != mul.end(); ++itr){
      cout << itr->first << '\t' << itr->second << '\n';
   }
   return 0;
}

출력 결과

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

KEY ELEMENT
1 10
2 20
3 30
4 90
5 40
6 50

마무리

multimap::insert()는 키-값 쌍을 multimap에 추가하는 가장 기본적이면서 중요한 함수입니다. 참고로 이 함수의 평균 시간 복잡도는 O(log n)으로, 내부적으로 균형 이진 트리 구조를 사용하기 때문에 삽입 후에도 항상 키 기준으로 정렬된 상태가 유지됩니다. 반복자를 활용한 위치 지정 삽입이나 범위 삽입을 함께 익혀두면 더욱 효율적인 C++ 프로그래밍에 도움이 됩니다.