💡 퀵 접속: cpp.kr/stack
C++ 표준 라이브러리의 컨테이너 어댑터로, LIFO(Last In First Out) 방식으로 동작하는 스택을 구현합니다.
#include <iostream>
#include <stack>
int main() {
// 스택 생성
std::stack<int> s;
// 요소 추가
s.push(1);
s.push(2);
s.push(3);
// 스택 크기
std::cout << "스택 크기: " << s.size() << std::endl;
// 요소 출력
std::cout << "스택의 요소들: ";
while (!s.empty()) {
std::cout << s.top() << " ";
s.pop();
}
std::cout << std::endl;
return 0;
}
실행 결과:
스택 크기: 3 스택의 요소들: 3 2 1
#include <iostream>
#include <stack>
#include <string>
int main() {
std::stack<std::string> history;
// 방문 기록 추가
history.push("메인 페이지");
history.push("제품 목록");
history.push("제품 상세");
// 현재 페이지 확인
std::cout << "현재 페이지: " << history.top() << std::endl;
// 뒤로 가기
history.pop();
std::cout << "이전 페이지: " << history.top() << std::endl;
// 남은 기록 출력
std::cout << "\n방문 기록:" << std::endl;
while (!history.empty()) {
std::cout << history.top() << std::endl;
history.pop();
}
return 0;
}
실행 결과:
현재 페이지: 제품 상세 이전 페이지: 제품 목록 방문 기록: 제품 목록 메인 페이지
#include <iostream>
#include <stack>
int main() {
std::stack<int> s1;
// 원본 스택에 요소 추가
for (int i = 1; i <= 3; ++i) {
s1.push(i);
}
// 스택 복사
std::stack<int> s2 = s1;
// 복사된 스택 출력
std::cout << "복사된 스택의 요소들: ";
while (!s2.empty()) {
std::cout << s2.top() << " ";
s2.pop();
}
std::cout << std::endl;
return 0;
}
실행 결과:
복사된 스택의 요소들: 3 2 1
| 메서드 | 설명 |
|---|---|
| push() | 요소 추가 |
| pop() | 최상위 요소 제거 |
| top() | 최상위 요소 접근 |
| size() | 요소 개수 반환 |
| empty() | 스택이 비어있는지 확인 |
| swap() | 다른 스택과 내용 교환 |