stack
Time Complexity : O(n)
stack은 LIFO(Last in First Out) 형식을 가지고 있는 데이터 저장 방식입니다.
stack은 STL(=Standard Template Library)로 사용하는 데
있어서도 정해진 함수가 포함되어 있습니다.
이번 포스트에서는 stack에서 사용하는
empty, size 함수에 대해서 이야기를 나눠볼까 합니다.
stack을 하기 위해서는 #include <stack>을 통해서
라이브러리에서 stack을 사용할 것이라는 걸 컴퓨터에게 알려주어야 합니다.
그 다음으로 stack <datatype> name;으로
어떤 이름을 가지고 어떤 데이터 타입의 스택을 사용할 것인지에 대해서 선언해주어야 합니다.
// whoIsHoo
// C++에 빠지다
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> hooStack;
for (int i = 0; i < 10; i++)
{
hooStack.push(i);
}
if (hooStack.empty())
{
cout << "hooStack은 empty입니다." << endl;
}
else
cout << "hooStack은 " << hooStack.size() << "입니다." << endl;
while (!hooStack.empty())
{
hooStack.pop();
}
cout << endl << "pop 함수를 실행한 이후 변화 값입니다." << endl << endl;
if (hooStack.empty())
{
cout << "hooStack은 empty입니다." << endl;
}
else
cout << "hooStack은 " << hooStack.size() << "입니다." << endl;
return 0;
}
hooStack은 10입니다.
pop 함수를 실행한 이후 변화 값입니다.
hooStack은 empty입니다.
hooStack.empty()
Time Complexity : O(1)
(여기서 hooStack은 제가 임의로 지정한 스택의 이름이니 참고해주시면 감사하겠습니다.)
stack에서 empty 함수는 말 그대로 stack이 비어있는지를 확인하는 함수입니다.
스택이라는 데이터 저장 공간이 있다고 가정했을때, 해당 공간이 완전히 비어있는지(empty)를 확인하는 것이죠.
(참고로 미국에 가서 empty room하면 정말 아무것도 없는 비어있는 방을 의미합니다.)
따라서 empty 함수는 특정한 역할이나 기능을 한다기 보다는 비어있는지 아닌지를
식별해주는 true or false의 역할에 가깝다고 볼 수 있습니다.
위의 코드에서도 hooStack이 비어있는지를 판단해주는
조건(=condition)으로 empty 함수가 사용되고 있는 걸 알 수 있습니다.
형 empty 함수를 쓴다고 스택에 있는 elements가 사라지는 건 아닌가요?
네 사라지지 않습니다.
empty라고 해서 stack에 있는 elements 자체를 없애는 걸로 착각할 수 있지만
스택(=stack)이 비어있는지만을 확인해준다는 점 유의하시길 바랍니다.
hooStack.size()
Time Complexity : O(1)
Stack에서 size 함수는 얼마나 많은 elements가 들어있는지를 알려주는 역할을 합니다.
마찬가지로
size 함수만 사용해서 결과값에 변화를 주는 것 보다는 판별하는 조건으로 사용되는 것이죠.
hoostack에서 elements를 없애주는 pop 함수를 통해서
hooStack의 사이즈가 달라진 걸 확인할 수 있습니다.
'C and C++' 카테고리의 다른 글
[C Language] 동적 메모리 할당: Malloc Function (0) | 2022.05.30 |
---|---|
[C++] 반복문: For Loop(For문) (0) | 2022.04.16 |
stack functions(stack.push(), stack.top(), stack.pop()) (0) | 2020.05.03 |
[C++] Queue(큐)란? (0) | 2020.05.02 |
Stack(스택)이란? (0) | 2020.04.30 |
댓글