본문 바로가기
프로그래밍/C&C++

[C++]스택(Stack)pop 함수 이해하기 - 스택에서 데이터 제거

by wyatti 2023. 6. 25.

이 포스팅에서는 C++에서 스택의 중요한 함수인 'pop'에 대해 배웁니다. 여러 코드 예시를 통해 pop 함수가 어떻게 스택의 최상단 데이터를 제거하는지 알아보세요.
스택에서의 데이터 제거 - C++ 'pop' 함수 이해하기

 

안녕하세요, C++를 공부하고 계신 여러분! 오늘은 스택에서 가장 중요한 연산 중 하나인 pop 함수에 대해 설명하려고 합니다. 스택은 후입선출(LIFO: Last In First Out)의 원칙을 따르는 데이터 구조이며, pop 함수는 이 원칙에 따라 가장 최근에 스택에 추가된 요소를 삭제하는 역할을 합니다. 이 포스팅을 통해 pop 함수가 어떻게 동작하고, 어떻게 활용될 수 있는지 살펴보도록 하겠습니다.

 

 

스택에서 pop 함수의 역할

pop 함수는 C++의 스택에서 가장 상단에 있는 요소를 삭제하는 함수입니다. 아래 예시 코드를 통해 이해를 돕도록 하겠습니다.

#include 
#include 

int main() {
    std::stack s;

    s.push(10);
    s.push(20);
    s.push(30);  // 스택 상태: [10, 20, 30]

    s.pop();  // 이제 스택 상태는 [10, 20]입니다.
    std::cout << s.top() << std::endl;  // 출력: 20
}

위 코드에서 s.pop(); 코드는 스택의 최상단 요소인 30을 삭제합니다.

 

 

pop과 top 함수의 관계

pop 함수는 스택의 최상단 요소를 삭제하지만 반환하지는 않습니다. 이 점이 top 함수와는 다르게 작동합니다. top 함수는 스택의 최상단 요소를 반환하지만 삭제하지는 않습니다. 때문에 이 두 함수를 함께 사용하면 스택의 최상단 요소를 반환하고 삭제하는 것이 가능해집니다. 아래 코드를 살펴봅시다.

#include 
#include 

int main() {
    std::stack s;

    s.push(10);
    s.push(20);
    s.push(30);  // 스택 상태: [10, 20, 30]

    std::cout << s.top() << std::endl;  // 출력: 30
    s.pop();  // 이제 스택 상태는 [10, 20]입니다.
    std::cout << s.top() << std::endl;  // 출력: 20
}

 

 

 

스택이 비어 있는 경우의 pop 함수 사용

만약 스택이 비어있을 때 pop 함수를 사용하게 되면, 프로그램은 예측하지 못한 동작을 수행하게 됩니다. 이를 방지하기 위해 pop 함수를 호출하기 전에 항상 스택이 비어있지 않은지 확인해야 합니다. 이는 empty 함수를 사용하여 확인할 수 있습니다.

#include 
#include 

int main() {
    std::stack s;

    // 스택이 비어있지 않을 때만 pop을 수행합니다.
    if (!s.empty()) {
        s.pop();
    }
}

 

 

실제 문제에 pop 함수 적용하기

이제 pop 함수를 어떻게 사용하는지 알았으니, 실제 문제에 어떻게 적용할 수 있는지 알아보겠습니다. 이를 위해 배열의 모든 요소를 스택에 추가한 후, 이를 모두 pop하는 함수를 만들어 봅시다.

#include 
#include 
#include 

void processElements(std::vector& arr) {
    std::stack s;
    
    for(int num : arr) {
        s.push(num);  // 배열의 모든 요소를 스택에 추가합니다.
    }
    
    while(!s.empty()) {
        std::cout << s.top() << " ";  // 출력: 스택의 최상단 요소
        s.pop();  // 최상단 요소를 스택에서 삭제합니다.
    }
}

int main() {
    std::vector arr = {1, 2, 3, 4, 5};
    processElements(arr);  // 출력: 5 4 3 2 1
}

스택의 pop 함수는 데이터를 관리하고 복잡한 문제를 해결하는 데 있어 중요한 도구입니다. 이 글을 통해 C++의 pop 함수의 작동 방식과 활용을 이해하셨길 바랍니다.

댓글