C++ STL에서 match_results::max_size() 함수는 match_results 객체가 담을 수 있는 최대 요소 개수를 반환합니다. 이 값은 시스템이나 라이브러리 구현에 따라 달라질 수 있으며, 컨테이너가 이론상 저장 가능한 요소 수의 상한을 나타냅니다.
이 함수는 매개변수를 받지 않으며, 호출 시 현재 객체의 실제 크기(size)와 무관하게 항상 동일한 최댓값을 반환합니다.
주요 특징
- 반환형은
size_type으로, 부호 없는 정수형입니다. - 시간 복잡도는 O(1)로 상수 시간에 결과를 얻습니다.
- max_size()는 메모리 한계나 구현 제약에 따른 이론적 최댓값이며, 실제로 그만큼 할당이 보장되는 것은 아닙니다.
예제 코드
#include <iostream>
#include <regex>
using namespace std;
int main() {
match_results<const char*> m;
cout << "max_size: " << m.max_size() << endl;
return 0;
}위 코드에서 m은 match_results 클래스의 객체입니다. 객체를 생성한 직후 아무런 매칭 작업을 수행하지 않았음에도 max_size() 값을 확인할 수 있습니다.
실행 결과
max_size: 768614336404564650
출력된 값은 실행 환경(운영체제, 컴파일러, 시스템 아키텍처)에 따라 다르게 나타날 수 있습니다.
size()와 max_size()의 차이
size()는 현재 match_results 객체에 실제로 저장된 요소(매칭 그룹)의 개수를 반환하는 반면, max_size()는 컨테이너가 저장할 수 있는 요소 수의 상한선을 반환합니다. 따라서 항상 size() ≤ max_size() 관계가 성립합니다.