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

C++ STL stack::top() 함수 완벽 가이드 – 문법과 예제

이 글에서는 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() 함수로 스택이 비어 있는지 먼저 확인한 후 사용하는 것이 안전합니다.