반응형
스택의 기본 동작(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_C++' 카테고리의 다른 글
C++, 큐 (Queue)구현하기 - 연결 리스트, 배열 이용 (0) | 2024.12.10 |
---|---|
C++, 스택 STL::stack 사용하기 (0) | 2024.11.26 |
C++, 명령행(command line) 사용해서 텍스트 파일 출력하기 (0) | 2024.11.25 |
C++, 10진수 8진수 16진수 출력 (0) | 2024.11.24 |
C++, 소수점 자릿수 지정, 오른쪽 정렬 줄맞추기 (0) | 2024.11.23 |