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

C++ STL deque의 clear( )와 erase( ) 함수 완벽 가이드


이 글의 목표는 C++ STL에서 deque의 clear( ) 함수가 실제로 어떻게 작동하는지 예제를 통해 살펴보는 것입니다.

Deque(덱)란 무엇인가?

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

deque.clear( )란 무엇인가?

clear( ) 함수는 deque에 담긴 모든 요소를 한 번에 제거하여 크기를 0으로 만드는 데 사용됩니다. 별도의 매개변수를 받지 않으며, 반환값도 없습니다.

문법(Syntax)

dequename.clear( )

동작 예시

입력 Deque – 96 97 98 100
출력 Deque – 비어 있음(empty)

입력 Deque – 1 2 3 4 5 6
출력 Deque – 비어 있음(empty)

구현 접근 방식

  • 먼저 deque를 선언하고 초기화합니다.

  • 반복자를 사용해 현재 deque의 내용을 출력합니다.

  • clear( ) 함수를 호출하여 모든 요소를 제거합니다.

  • 다시 반복자를 순회하며 비어 있는 deque를 확인합니다.

위 접근 방식을 따르면 deque의 전체 내용을 손쉽게 초기화할 수 있습니다.

예제 코드

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

int main( ){
    // deque 초기화
    deque<int> dq = { 85, 87, 88, 89, 90 };

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

    // clear( ) 함수 호출
    dq.clear( );

    // 비워진 deque 출력
    cout << "\nNew Deque:";
    for(auto x = dq.begin( ); x != dq.end( ); ++x)
        cout << " " << *x;

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

입력 - Deque: 85 87 88 89 90
출력 - New Deque: (비어 있음)

두 번째 반복문에서 출력되는 요소가 없으므로 New Deque: 뒤에는 아무것도 표시되지 않습니다. 이는 clear( ) 호출 후 deque가 완전히 비었다는 것을 의미합니다.

참고: deque.erase( )와의 차이

erase( ) 함수는 clear( )와 달리 deque의 특정 위치 또는 지정한 범위의 요소만 선택적으로 제거합니다. 단일 반복자를 인자로 넘기면 해당 위치의 요소 하나를, 두 개의 반복자(first, last)를 넘기면 [first, last) 범위의 요소들을 삭제하며, 제거된 마지막 요소의 다음 위치를 가리키는 반복자를 반환합니다. 전체 초기화가 필요하면 clear( ), 부분 삭제가 필요하면 erase( )를 사용하는 것이 적절합니다.