C++ STL에서 forward_list::reverse( ) 함수는 순방향 리스트(forward list)에 저장된 요소들의 순서를 역순으로 뒤집는 데 사용됩니다. 이 글에서는 해당 함수의 개념, 문법, 반환값 그리고 실제 동작 예제까지 자세히 살펴보겠습니다.
포워드 리스트(Forward List)란?
포워드 리스트는 단일 연결 리스트(singly linked list)라고 이해할 수 있습니다. 각 요소는 다음 요소를 가리키는 링크만 하나씩 가지고 있어, 탐색이 오직 앞쪽(순방향)으로만 가능합니다. 반면 일반 리스트(list)는 양방향 링크를 가지고 있어 앞뒤 어느 방향으로든 탐색이 가능합니다.
링크를 하나만 유지하면 되기 때문에 포워드 리스트는 메모리 사용량이 적고 속도가 빠르다는 장점이 있으며, 요소의 삽입과 삭제도 상수 시간(O(1)) 안에 수행할 수 있습니다.
forward_list::reverse( ) 함수란?
forward_list::reverse( )는 C++ 표준 템플릿 라이브러리(STL)에 포함된 함수로, 포워드 리스트 내부에 있는 요소들의 순서를 반대로 뒤집는 역할을 합니다.
문법(Syntax)
forwardlist_name.reverse();
매개변수(Parameter)
이 함수는 별도의 매개변수를 받지 않습니다.
반환값(Return Value)
반환값이 없습니다(void). 단순히 리스트의 요소 순서를 뒤집는 연산만 수행합니다.
예제
입력 -: 리스트 요소: 57 99 54 34 84 출력 -: 뒤집힌 리스트 요소: 84 34 54 99 57 입력 -: 리스트 요소: 40 30 60 90 70 출력 -: 뒤집힌 리스트 요소: 70 90 60 30 40
프로그램의 동작 방식
먼저 포워드 리스트를 초기화합니다.
reverse( ) 함수를 호출하기 전에 리스트의 원래 상태를 출력합니다.
C++ 헤더 파일에 정의되어 있는 forward_list::reverse( ) 함수를 호출하여 요소 순서를 뒤집습니다.
마지막으로 뒤집힌 포워드 리스트를 화면에 출력합니다.
예제 코드
// forward_list::reverse( )의 동작을 보여주는 C++ 코드
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
// 포워드 리스트 초기화
forward_list<int> forward = {10, 20, 30, 40, 50};
cout << "원본 리스트 : ";
for (auto it = forward.begin(); it != forward.end(); ++it)
cout << *it << " ";
// 순서를 뒤집는 reverse 함수 호출
forward.reverse();
cout << "\n뒤집힌 리스트 : ";
for (auto it = forward.begin(); it != forward.end(); ++it)
cout << *it << " ";
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
원본 리스트 : 10 20 30 40 50 뒤집힌 리스트 : 50 40 30 20 10
이처럼 forward_list::reverse( ) 함수를 활용하면 별도의 알고리즘 구현 없이 한 줄의 코드로 포워드 리스트 전체의 요소 순서를 손쉽게 뒤집을 수 있습니다.