스택과 벡터는 사용하는 용도가 다릅니다.
물론 벡터를 통해 스택의 모든 기능을 제공할 수 있고,
실제로도 C++에서 스택은 container adaptor로써 스택의 기능을 제공할 수 있는 모든 클래스를 스택의 구현체로 넣을 수 있습니다.
default는 deque이지만 stack<int, vector<int>> 를 사용하는것으로 내부에 벡터를 사용할 수 있죠.
하지만 기능이 많은것이 더 좋다라는 법은 없습니다.
스택은 특성상 Last In First Out(LIFO)로만 동작하기 때문에, stack으로 선언했다면 이 변수가 어떤 방식으로 동작할지를 쉽게 예상할 수 있습니다.
벡터로 선언했다면 배열로도 쓸 수 있기때문에 목적이 스택이라 해도 바로 눈치채기 힘들겠죠.
따라서 용도에 맞는 컨테이너의 사용은 코드의 가독성을 증가시켜줍니다.
성능의 경우는 내부 컨테이너를 어떤것을 사용하느냐에 따라 다를것입니다. vector를 내부로 사용한다면 vector와 똑같은 성능을 보이겠죠.
dwhylee 7년 전
보통 스택을 사용할 일이 있으면 저는 그냥 vector 를 이용해서 스택처럼 쓰곤 합니다.
이번에 푼 문제의 경우에서는 stack 을 사용하나, vector로 사용하거나 시간은 똑같이 걸리더라구요.
vector는 [ ] 이 가능한게 편리해서 아무래도 계속 쓰게 되는것 같네요. stack 보다 좀 더 다양한 기능도 있고...
STL 많이 쓰라고 권장하는데 vector 또한 최적화가 되어있을 것 같은데,
stack 그 자체와 vector를 stack 처럼 쓰는것의 차이가 있는지 보통의 경우에는 시간이 어떻게 되는지 궁금해서 문의드립니다.보통의 경우에는 시간이 어떻게 되는지 궁금해서 문의드립니다.