이 튜토리얼에서는 C++ STL에서 제공하는 multiset 컨테이너의 max_size() 함수에 대해 자세히 알아보겠습니다.
max_size() 함수란?
max_size()는 해당 컨테이너가 시스템 환경 및 라이브러리 구현에 따라 저장할 수 있는 이론상 최대 요소 개수를 반환하는 함수입니다. 이 값은 실제 사용 가능한 메모리 양에 따라 달라질 수 있으며, 프로그램 실행 중에는 일반적으로 일정하게 유지됩니다.
참고로 size()가 현재 실제로 저장된 요소의 개수를 반환한다면, max_size()는 컨테이너가 담을 수 있는 상한선을 의미합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
multiset<int> s;
s.insert(10);
s.insert(13);
s.insert(13);
s.insert(25);
s.insert(24);
cout << "multiset의 요소들: ";
for (auto it = s.begin(); it != s.end(); it++)
cout << *it << " ";
cout << "\nmultiset의 max_size: " << s.max_size();
return 0;
}실행 결과
multiset의 요소들: 10 13 13 24 25 multiset의 max_size: 461168601842738790
코드 설명
위 예제에서는 int형 multiset을 생성한 뒤 다섯 개의 값을 삽입했습니다. 이때 13은 두 번 삽입되었는데도 중복 없이 그대로 저장되는 것을 확인할 수 있습니다. 이것이 multiset이 set과 다른 핵심 특징으로, 동일한 값을 여러 개 허용하며 항상 오름차순으로 정렬된 상태를 유지합니다.
출력 결과를 보면 max_size 값이 약 4.6×10¹⁷으로 매우 큰 숫자인데, 이는 64비트 시스템에서 할당 가능한 이론적 최대 크기를 나타냅니다. 따라서 실제 코딩 테스트나 일반적인 프로그래밍에서는 이 한계에 도달할 걱정 없이 자유롭게 요소를 추가할 수 있습니다.