이 글의 목표는 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( )를 사용하는 것이 적절합니다.