Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL deque resize() 함수 완벽 가이드

C++ STL의 deque resize() 함수란?

이 글에서는 C++ STL에서 제공하는 deque resize() 함수의 기능과 사용법을 예제 코드와 함께 살펴봅니다.

데크(Deque)란 무엇인가?

데크(Double Ended Queue)는 양쪽 끝에서 삽입과 삭제가 모두 가능한 시퀀스 컨테이너입니다. 일반적인 큐(Queue) 자료구조는 데이터를 뒤(Rear)에만 삽입하고 앞(Front)에서만 삭제할 수 있습니다. 버스 정류장의 줄에 비유해 볼 수 있는데, 새로 온 사람은 줄의 맨 뒤에만 설 수 있고 맨 앞에 선 사람이 가장 먼저 탑승하게 됩니다. 반면 데크는 이름 그대로 양쪽 끝 어디에서든 데이터의 삽입과 삭제가 자유롭다는 점이 큰 차이입니다.

deque resize() 함수의 역할

deque resize() 함수는 데크의 크기를 변경하는 데 사용됩니다.

  • 지정한 크기가 현재 크기보다 크면: 새로운 요소들이 데크의 끝에 추가됩니다. 이때 별도의 값을 지정하지 않으면 요소는 기본값(0 등)으로 초기화됩니다.
  • 지정한 크기가 현재 크기보다 작으면: 초과하는 요소들이 뒤에서부터 제거됩니다.

문법

dequename.resize(n)

n: 데크의 새로운 크기를 나타냅니다.

참고로 두 번째 매개변수를 사용해 새로 추가될 요소의 값을 직접 지정할 수도 있습니다. 예를 들어 dequename.resize(n, val)처럼 호출하면 늘어나는 공간이 val 값으로 채워집니다.

예시

입력 — 현재 크기: 5
Deque: 12 13 14 15 16

출력 — resize 후 크기: 7
새로운 Deque: 12 13 14 15 16 0 0

입력 — 현재 크기: 5
Deque: F O R C E

출력 — resize 후 크기: 4
새로운 Deque: F O R C

구현 순서

  • 먼저 데크를 선언하고 초기화합니다.
  • 데크의 현재 크기를 확인하고 출력합니다.
  • resize() 함수를 호출하여 크기를 변경합니다.
  • resize 이후의 데크를 다시 출력합니다.

예제 1: 크기 확대하기

// deque resize() 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;

int main() {
    // 데크 초기화
    deque<int> deq = { 85, 87, 88, 89, 90 };
    cout << "데크의 크기: " << deq.size() << "\n";

    // 데크 출력
    cout << "Deque: ";
    for (auto x = deq.begin(); x != deq.end(); ++x)
        cout << *x << " ";

    // resize() 함수 호출 (크기 확대)
    deq.resize(7);

    // resize 이후 데크 출력
    cout << "\nresize 후 크기: " << deq.size() << "\n";
    cout << "새로운 Deque: ";
    for (auto x = deq.begin(); x != deq.end(); ++x)
        cout << *x << " ";

    return 0;
}

실행 결과

데크의 크기: 5
Deque: 85 87 88 89 90 
resize 후 크기: 7
새로운 Deque: 85 87 88 89 90 0 0 

위 코드에서는 크기가 5인 데크를 7로 확대했습니다. 새로 추가된 2개의 요소는 값을 지정하지 않았기 때문에 기본값인 0으로 초기화된 것을 확인할 수 있습니다.

예제 2: 크기 축소하기

// deque resize() 함수의 동작을 보여주는 C++ 코드
#include <iostream>
#include <deque>
using namespace std;

int main() {
    // 데크 초기화
    deque<int> deq = { 14, 15, 16, 17, 18, 19, 20 };
    cout << "데크의 크기: " << deq.size() << "\n";

    // 데크 출력
    cout << "Deque: ";
    for (auto x = deq.begin(); x != deq.end(); ++x)
        cout << *x << " ";

    // resize() 함수 호출 (크기 축소)
    deq.resize(5);

    // resize 이후 데크 출력
    cout << "\nresize 후 크기: " << deq.size() << "\n";
    cout << "새로운 Deque: ";
    for (auto x = deq.begin(); x != deq.end(); ++x)
        cout << *x << " ";

    return 0;
}

실행 결과

데크의 크기: 7
Deque: 14 15 16 17 18 19 20 
resize 후 크기: 5
새로운 Deque: 14 15 16 17 18 

이번에는 크기가 7인 데크를 5로 축소했습니다. 뒤쪽의 초과 요소인 19와 20이 제거되고 앞의 5개 요소만 남은 것을 볼 수 있습니다.

마무리

deque resize() 함수는 하나의 호출만으로 데크의 크기를 유연하게 조절할 수 있는 편리한 기능입니다. 크기를 늘릴 때는 새 요소가 기본값 또는 지정한 값으로 채워지고, 줄일 때는 뒤쪽 요소부터 잘려나간다는 점만 기억하면 됩니다. 실무에서도 컨테이너 크기를 동적으로 관리할 때 자주 활용되므로 위 예제들을 직접 실행해 보며 익혀두는 것이 좋습니다.