이 글에서는 C++ STL에서 제공하는 deque의 max_size() 함수가 어떤 기능을 수행하는지 예제와 함께 자세히 살펴보겠습니다.
덱(Deque)이란?
덱(Deque)은 Double Ended Queue의 줄임말로, 양쪽 끝(front와 back)에서 모두 요소를 삽입하고 삭제할 수 있는 시퀀스 컨테이너입니다.
일반적인 큐(Queue) 자료구조는 데이터를 뒤쪽(END)에만 삽입하고 앞쪽(FRONT)에서만 삭제할 수 있습니다. 버스 정류장 줄을 생각해 보면 쉽게 이해할 수 있습니다. 새로운 사람은 항상 줄의 맨 뒤에만 추가되고, 맨 앞에 서 있는 사람이 가장 먼저 나가게 됩니다.
반면 덱(Double Ended Queue)은 이름 그대로 양쪽 끝 모두에서 데이터의 삽입과 삭제가 가능하다는 점이 일반 큐와 가장 큰 차이점입니다.
deque max_size() 함수란?
max_size() 함수는 해당 덱이 시스템 환경상 담을 수 있는 최대 요소 개수를 확인할 때 사용됩니다. 이 값은 현재 덱에 실제로 들어 있는 요소 수(size)가 아니라, 메모리 및 시스템 제약에 따른 이론상 최댓값입니다.
문법
dequename.max_size()
반환값 − 덱이 담을 수 있는 최대 요소 개수를 반환합니다.
예제
입력 Deque: 12 13 14 15 16 출력 최대 크기: 4611686018427387903 입력 Deque: F O R C E 출력 최대 크기: 4611686018427387903
풀이 접근 방식
먼저 덱을 선언하고 초기화합니다.
덱의 내용을 출력합니다.
max_size() 함수를 호출하여 덱의 최대 크기를 확인합니다.
위 접근 방식을 사용하면 덱의 최대 크기를 손쉽게 확인할 수 있습니다.
예제 1
// deque max_size( ) 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;
int main() {
// 덱 초기화
deque<int> dq = { 11, 12, 13, 14, 15 };
// 덱 출력
cout << "Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
// 덱의 최대 크기 출력
cout << "\n덱의 최대 크기: " << dq.max_size();
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 생성됩니다.
입력 - Deque: 11 12 13 14 15 출력 - 덱의 최대 크기: 4611686018427387903
예제 2
// deque max_size( ) 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;
int main() {
// 덱 초기화
deque<int> dq = { 14, 15, 16, 17, 18, 19, 20 };
// 덱 출력
cout << "Deque: ";
for (auto x = dq.begin(); x != dq.end(); ++x)
cout << *x << " ";
// 덱의 최대 크기 출력
cout << "\n덱의 최대 크기: " << dq.max_size();
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 생성됩니다.
입력 - Deque: 14 15 16 17 18 19 20 출력 - 덱의 최대 크기: 4611686018427387903
정리
deque의 max_size() 함수는 컨테이너가 이론적으로 저장할 수 있는 최대 요소 개수를 반환합니다. 64비트 시스템에서는 일반적으로 4611686018427387903(2⁶² − 1)과 같은 매우 큰 값이 출력되며, 이는 실제 사용 가능한 메모리 양에 따라 달라질 수 있습니다. 참고로 현재 실제로 저장된 요소의 개수를 알고 싶다면 size() 함수를 사용하면 됩니다.