1. STL stack 이란?
STL(stack, queue, deque 등)은 C++ 표준 라이브러리의 일부로, 다양한 컨테이너와 알고리즘을 제공하는 템플릿 기반의 라이브러리입니다. 이 중에서 "stack"은 후입선출(LIFO, Last-In First-Out) 자료구조를 구현한 클래스입니다. STL stack은 기본적인 push, pop, top 등의 기능을 제공하여 쉽게 스택을 구현하고 사용할 수 있도록 도와줍니다. 스택은 주로 데이터의 삽입과 삭제가 한쪽 끝에서만 일어나는 경우에 사용되며, 일반적으로 컴파일러의 함수 호출 스택, 브라우저의 뒤로가기 기능, 수식의 계산 등에 활용됩니다. STL stack은 표준 라이브러리로 제공되므로 효율적이고 안전한 스택 구현을 위해 사용할 수 있습니다.
2. STL stack의 주요 기능들
STL stack은 다음과 같은 주요 기능을 제공합니다:
2.1. push
void push(const T& element);
스택의 맨 위에 원소를 삽입합니다. 삽입할 원소는 매개변수로 전달됩니다.
2.2. pop
void pop();
스택의 맨 위에 있는 원소를 삭제합니다. 삭제된 원소는 반환되지 않으며, 스택이 비어있을 경우 동작하지 않습니다.
2.3. top
T& top();
const T& top() const;
스택의 맨 위에 있는 원소를 참조합니다. 참조된 원소는 변경할 수 있습니다. 만약 스택이 비어있을 경우, 정의되지 않은 동작을 수행합니다.
2.4. empty
bool empty() const;
스택이 비어있는지 확인합니다. 스택이 비어있을 경우 true를 반환하고, 비어있지 않은 경우 false를 반환합니다.
2.5. size
size_t size() const;
스택에 저장된 원소의 개수를 반환합니다.
STL stack은 이 외에도 여러 다른 기능들을 제공하지만, 위에서 소개된 기능들은 스택을 사용하는 데 가장 기본적이고 필수적인 기능들입니다.
3. STL stack의 사용법 예제
다음은 STL stack의 기본적인 사용법 예제입니다:
#include <iostream>
#include <stack>
int main() {
std::stack<int> myStack;
// 스택에 원소 추가
myStack.push(10);
myStack.push(20);
myStack.push(30);
// 스택의 사이즈 출력
std::cout << "Stack Size: " << myStack.size() << std::endl;
// 스택의 맨 위 원소 출력
std::cout << "Top Element: " << myStack.top() << std::endl;
// 스택에서 원소 제거
myStack.pop();
// 스택이 비어있는지 확인
if (myStack.empty()) {
std::cout << "Stack is empty" << std::endl;
} else {
std::cout << "Stack is not empty" << std::endl;
}
return 0;
}
출력:
Stack Size: 3
Top Element: 30
Stack is not empty
이 예제에서는 std::stack
클래스를 사용하여 정수형 스택을 생성합니다. push
함수를 사용하여 스택에 원소를 추가하고, size
함수로 스택의 크기를 확인합니다. top
함수로 스택의 맨 위에 있는 원소를 출력하고, pop
함수로 스택에서 원소를 제거합니다. 마지막으로 empty
함수를 사용하여 스택이 비어있는지를 확인합니다.
이와 같이 STL stack은 간단하고 직관적인 인터페이스를 제공하여 스택을 쉽게 다룰 수 있도록 도와줍니다.