스택은 한 쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형 구조로 되어 있다. 데이터를 넣는것을 push라고하며 빼는것을 pop이라고 한다. 스택에서 pop을 하면 가장 최근에 push한 데이터부터 나오는 후입선출(LIFO-Last In First Out) 구조를 가지고 있다.
C에서는 직접구현해야 하지만 C++에는 구현된 기능을 사용하여 간단하게 구현할 수 있다.
두가지방법으로 사용이 가능한데 벡터를 사용하여 구현할 수도 있지만 stack이 구현되어있기에 간단히 stack헤더파일을 이용하여 사용도 가능하다.
벡터는 끝에서 발생하는 삽입과 삭제에 대해서 빠른 실행속도를 가지고 있다. 스택의 삽입과 삭제는 맨끝에서 일어나기에 벡터를 사용하기에 적합한 부분이 있다.
#include<vector>
vector<int> v;
v.push_back(5);
v.pop_back();
위의 코드처럼 벡터의 사용을 위해 헤더파일을 포함해주고 벡터를 선언한다.
그리고 벡터 함수인 push_back과 pop_back을 이용하여 삽입과 삭제연산을 해주면된다.
// stack_empty.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
// Declares stacks with default deque base container
stack <int> s1, s2;
s1.push( 1 );
if ( s1.empty( ) )
cout << "The stack s1 is empty." << endl;
else
cout << "The stack s1 is not empty." << endl;
if ( s2.empty( ) )
cout << "The stack s2 is empty." << endl;
else
cout << "The stack s2 is not empty." << endl;
}
스택기능 사용시 위의 코드처럼 스택의 사용이 가능하다.
참고자료
위키백과-스택
https://learn.microsoft.com/ko-kr/cpp/standard-library/stack-class?view=msvc-170