이 글에서는 C++ STL의 stack::top() 함수가 어떻게 동작하는지, 문법은 어떻게 되어 있는지, 그리고 실제 예제를 통해 어떻게 활용하는지 자세히 살펴보겠습니다.
C++ STL에서 스택(Stack)이란 무엇인가?
스택은 LIFO(Last In First Out, 후입선출) 방식으로 데이터를 저장하는 대표적인 자료구조입니다. 데이터의 삽입(push)과 삭제(pop)가 모두 가장 마지막에 삽입된 요소의 위치, 즉 '맨 위(top)'에서만 일어납니다.
접시를 쌓아 올린 더미를 떠올리면 쉽게 이해할 수 있습니다. 새 접시를 추가할 때는 맨 위에 올리고, 접시를 꺼낼 때 역시 맨 위에서부터 꺼내는 것과 같은 원리입니다.
stack::top()이란?
stack::top()은 C++ 표준 템플릿 라이브러리(STL)에 내장된 함수로, <stack> 헤더 파일에 정의되어 있습니다. 이 함수는 스택 컨테이너의 맨 위에 있는 요소, 즉 가장 최근에 삽입된 요소에 접근할 때 사용됩니다.
문법(Syntax)
stack_name.top();
매개변수(Parameters)
top() 함수는 별도의 매개변수를 받지 않습니다.
반환값(Return Value)
이 함수는 스택 컨테이너 맨 위에 있는 요소에 대한 참조(reference)를 반환합니다.
입력 예시
std::stack<int> odd; odd.emplace(1); odd.emplace(3); odd.emplace(5); odd.top();
출력 결과
5
위 예시에서 5가 가장 마지막에 삽입되었기 때문에 top()은 5를 반환합니다.
실전 예제
#include <iostream>
#include <stack>
using namespace std;
int main(){
stack<int> stck_1;
// 스택에 요소 삽입
stck_1.push(1);
stck_1.push(2);
stck_1.push(3);
stck_1.push(4);
// top()으로 맨 위 요소 확인
cout<<"top()으로 확인한 스택의 맨 위 요소: "<<stck_1.top();
cout<<"\n스택에 담긴 요소들: ";
while (!stck_1.empty()){
cout<<stck_1.top()<<" ";
stck_1.pop();
}
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
top()으로 확인한 스택의 맨 위 요소: 4 스택에 담긴 요소들: 4 3 2 1
마무리 정리
stack::top()은 스택의 맨 위 요소, 즉 가장 최근에 삽입된 요소에 접근하는 간단하면서도 필수적인 함수입니다. 다만 빈(empty) 스택에서 top()을 호출하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있으므로, 반드시 empty() 함수로 스택이 비어 있는지 먼저 확인한 후 사용하는 것이 안전합니다.