C_C++

C++, 클래스 스택 구현하기 stack

고니자니 2024. 11. 27. 08:48
반응형

스택의 기본 동작(push, pop, top)을 직접 구현한 코드입니다.

 

C++의 표준 라이브러리에서는 std::stack이라는 컨테이너 어댑터를 제공합니다. 사용자가 구현한 stack 클래스와 비교하면 다음과 같은 차이가 있습니다.

 

  • std::stack: 빠르게 사용하고 싶을 때, 기본적인 스택 동작을 수행할 때 적합.
  • 사용자 정의 클래스: 스택의 동작을 확장하거나 커스터마이징이 필요할 때 적합.

 

 

#include <iostream>
#include <vector>

class Stack {
private:
    std::vector<int> data; // 스택 데이터 저장

public:
    // 스택에 값을 추가
    void push(int value) {
        data.push_back(value);
    }

    // 스택의 최상단 값을 제거
    void pop() {
        if (data.empty()) {
            std::cerr << "Stack is empty. Cannot pop!" << std::endl;
            return;
        }
        data.pop_back();
    }

    // 스택의 최상단 값을 반환
    int top() {
        if (data.empty()) {
            std::cerr << "Stack is empty. No top element!" << std::endl;
            return -1; // 에러 처리
        }
        return data.back();
    }

    // 스택이 비어있는지 확인
    bool empty() const {
        return data.empty();
    }

    // 스택 크기 반환
    size_t size() const {
        return data.size();
    }
};

int main() {
    Stack s;

    s.push(10);
    s.push(20);
    s.push(30);

    std::cout << "Top element: " << s.top() << std::endl;

    s.pop();
    std::cout << "Top element after pop: " << s.top() << std::endl;

    while (!s.empty()) {
        std::cout << "Popping: " << s.top() << std::endl;
        s.pop();
    }

    return 0;
}

(Output)

Top element: 30
Top element after pop: 20
Popping: 20
Popping: 10

 

 


https://gonyzany.tistory.com/728

 

C++, 스택 STL::stack 사용하기

C++ 표준 라이브러리에서는 std::stack이라는 컨테이너 어댑터를 제공합니다. 이를 사용하면 쉽게 스택을 사용할 수 있습니다.#include #include int main() { std::stack s; // 스택에 값 추가 s.push(10); s.push(20);

gonyzany.tistory.com

 

반응형