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

C++ STL map 대입 연산자(=) 완벽 가이드: 개념, 문법, 예제

이 글에서는 C++ STL에서 map(맵) 컨테이너가 제공하는 대입 연산자 =(operator=)의 동작 방식, 문법, 그리고 실제 사용 예제를 자세히 살펴보겠습니다.

C++ STL에서 map이란 무엇인가?

map은 연관 컨테이너(associative container)의 하나로, 키(key)와 매핑된 값(mapped value)의 쌍으로 이루어진 요소들을 특정 순서에 따라 저장하는 자료구조입니다. map 컨테이너 내부에서 데이터는 항상 키를 기준으로 정렬되어 유지되며, 각 요소는 고유한 키를 통해 접근할 수 있습니다. 이러한 특성 덕분에 키를 이용한 빠른 검색이 가능합니다.

map의 대입 연산자(=)란?

map::operator=는 대입 연산자로, 한 map 컨테이너의 모든 요소를 다른 map 컨테이너로 복사하는 데 사용됩니다. 이때 대입을 받는 컨테이너(왼쪽 피연산자)의 기존 내용은 모두 덮어쓰기 되며, 오른쪽 컨테이너의 내용으로 완전히 대체됩니다.

문법(Syntax)

map1 = map2;

매개변수(Parameter)

연산자의 왼쪽에는 요소를 받을 map이, 오른쪽에는 복사할 원본 map이 위치합니다. 오른쪽 map의 내용 전체가 왼쪽 map으로 복사됩니다.

반환값(Return Value)

대입 연산자는 별도의 반환값을 가지지 않습니다. 단순히 왼쪽 map의 내용을 변경하는 부수 효과(side effect)만 수행합니다.

예제

간단한 입력 예시

map<char, int> newmap, themap;
newmap.insert({'a', 20});
newmap.insert({'b', 30});
themap = newmap;
// 결과: themap = {('a', 20), ('b', 30)}

전체 실행 예제

#include <bits/stdc++.h>
using namespace std;

int main() {
    map<int, int> TP, temp;
    TP.insert({ 2, 20 });
    TP.insert({ 1, 10 });
    TP.insert({ 3, 30 });
    TP.insert({ 4, 40 });
    TP.insert({ 6, 50 });

    // TP의 모든 요소를 temp로 복사
    temp = TP;

    cout << "\n원본 map TP의 데이터:\n";
    cout << "KEY\tELEMENT\n";
    for (auto i = TP.begin(); i != TP.end(); ++i) {
        cout << i->first << '\t' << i->second << '\n';
    }

    cout << "\n복사된 map temp의 데이터:\n";
    cout << "KEY\tELEMENT\n";
    for (auto i = temp.begin(); i != temp.end(); ++i) {
        cout << i->first << '\t' << i->second << '\n';
    }
    return 0;
}

출력 결과

원본 map TP의 데이터:
KEY     ELEMENT
1       10
2       20
3       30
4       40
6       50

복사된 map temp의 데이터:
KEY     ELEMENT
1       10
2       20
3       30
4       40
6       50

정리

map의 대입 연산자(=)는 한 컨테이너의 전체 내용을 다른 컨테이너로 깊은 복사(deep copy)하는 편리한 기능입니다. 복사 시 원본 map의 키-값 쌍이 그대로 유지되며, 대상 map의 기존 데이터는 모두 사라진다는 점에 유의해야 합니다. 또한 map은 키를 기준으로 자동 정렬되므로, 복사 후에도 요소들이 항상 정렬된 상태로 출력되는 것을 확인할 수 있습니다.