sjyog21   1년 전

if(input[j]=='<'){

if(!a.empty()){//조건문 하나 더 넣어야 하는지

b.push(a.top());

a.pop();

}

}

------------------------------------------------------------------

else if(input[j]=='-'){
if (!a.empty())
a.pop(); //조건문 하나 더 넣어야 하는지
}





이 두 부분에서 if문을 안넣어도

스택이 비어있으면 push나 pop이 자연스럽게(?) 실행되지않을텐데

굳이 if문을 넣어서 비어있는지 확인해야하나요...?

kokosoko59   1년 전

스택이 비어있을때 pop이 자연스럽게 실행되지 않는다고 하셨는데, 그렇지 않습니다.

스택이 비어있을때 pop의 동작은 정의되어있지 않고, 컴파일및 실행 환경에 따라서 예상못한 결과를 불러올 수 있습니다.

따라서 pop할 때는 empty인지 확인하는것이 꼭 필요합니다.

참고로 스택뿐 아니라 queue같은 cpp의 다른 컨테이너 라이브러리에서도 비슷합니다.

댓글을 작성하려면 로그인해야 합니다.