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)과 해시 정책도 함께 복사되며, 이전에 할당된 메모리는 적절히 해제됩니다.