이 글에서는 C++ STL의 set::max_size() 함수가 무엇인지, 어떤 문법으로 사용되고 어떻게 동작하는지, 그리고 어떤 값을 반환하는지 자세히 살펴보겠습니다.
C++ STL에서 Set(집합)이란?
C++ STL에서 Set은 중복 없는 고유한(unique) 요소만을 정렬된 순서로 저장하는 컨테이너입니다. Set의 요소는 그 값 자체가 곧 식별자 역할을 하기 때문에 반드시 고유해야 합니다.
한 번 Set에 추가된 값은 나중에 수정할 수 없습니다. 다만 기존 값을 삭제하거나 새로운 값을 추가하는 것은 언제든 가능합니다. 내부적으로 Set은 이진 탐색 트리(Binary Search Tree) 구조로 구현되어 있어 빠른 검색 성능을 제공합니다.
set::max_size()란 무엇인가?
max_size()는 C++ STL에 내장된 함수로, <set> 헤더 파일에 선언되어 있습니다. 이 함수는 해당 Set 컨테이너가 가질 수 있는 최대 크기(maximum size)를 반환합니다.
즉, 컨테이너가 이론상 도달할 수 있는 최대 크기를 의미합니다. 다만 실제로 그 크기만큼의 메모리 할당이 항상 보장되는 것은 아니며, 시스템 상황에 따라 특정 시점에 저장 공간 할당에 실패할 수도 있습니다.
문법(Syntax)
name_of_set.max_size();
매개변수(Parameter)
이 함수는 어떠한 매개변수도 받지 않습니다.
반환값(Return Value)
연관된 Set 컨테이너가 담을 수 있는 최대 요소 개수를 반환합니다.
예제 1
입력: set<int> myset;
myset.max_size();
출력: 요소 삽입 전 Set의 크기: 461168601842738790
예제 2
#include <bits/stdc++.h>
using namespace std;
int main(){
set<int> data_1, data_2;
data_1.insert(100);
cout<<"요소 삽입 후 Set의 max_size : "<<data_1.max_size()<< endl;
cout<<"요소 삽입 전 Set의 max_size : "<<data_2.max_size();
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −
요소 삽입 후 Set의 max_size : 461168601842738790
요소 삽입 전 Set의 max_size : 461168601842738790
위 결과에서 볼 수 있듯이, max_size()는 현재 저장된 요소 개수와 무관하게 항상 동일한 최댓값을 반환합니다.
예제 3
#include <iostream>
#include <set>
int main (){
int i;
std::set<int> Set;
if(Set.max_size()>1000){
for (i=0; i<=1000; i++)
Set.insert(i);
std::cout<<"Set에 1000개의 요소가 들어갔습니다.\n";
}
else
std::cout<<"Set에 1000개의 요소를 담을 수 없습니다.\n";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −
Set에 1000개의 요소가 들어갔습니다.
이처럼 max_size()를 활용하면 요소를 삽입하기 전에 해당 개수가 컨테이너의 최대 용량 범위 내에 있는지 미리 확인할 수 있습니다.