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

C++ std::unordered_multimap::operator=() 함수 완벽 정리

C++의 std::unordered_multimap::operator=() 함수는 기존 내용을 모두 대체하면서 새로운 내용을 할당하는 역할을 하며, 필요에 따라 컨테이너의 크기도 자동으로 조정합니다.

이 함수는 <unordered_map> 헤더에 선언되어 있으며, 복사 대입(copy assignment) 방식으로 동작합니다.

C++11 문법

unordered_multimap& operator=(const unordered_multimap& umm);

매개변수

umm - 동일한 타입의 다른 unordered_multimap 객체

대입 연산자는 인자로 전달된 umm 객체의 모든 요소를 현재 객체에 복사합니다. 원본 객체는 변경되지 않고 그대로 유지됩니다.

반환 값

자기 자신(this)의 포인터를 반환합니다.

반환 타입이 참조형이기 때문에 a = b = c와 같은 연쇄적인 대입(chained assignment)도 가능합니다.

예제 코드

#include <iostream>
#include <unordered_map>
using namespace std;

int main(void) {
    unordered_multimap umm1 = {
        {'a', 1},
        {'b', 2},
        {'c', 3},
        {'d', 4},
        {'e', 5},
    };

    unordered_multimap umm2;
    umm2 = umm1;

    cout << "Unordered multimap contains following elements" << endl;
    for (auto it = umm2.begin(); it != umm2.end(); ++it)
        cout << it->first << " = " << it->second << endl;

    return 0;
}

실행 결과

Unordered multimap contains following elements
e = 5
a = 1
b = 2
c = 3
d = 4

참고 사항

unordered_multimap은 해시 테이블 기반 컨테이너이므로, 요소들의 출력 순서는 컴파일러나 실행 환경에 따라 달라질 수 있습니다. 위 예제에서도 요소가 삽입 순서와 다르게 출력되는 것을 확인할 수 있습니다. 또한 대입 연산 수행 시 기존 버킷(bucket)과 해시 정책도 함께 복사되며, 이전에 할당된 메모리는 적절히 해제됩니다.