2012-08-11 6 views
2

STL queuefront()back() 방법을 가지고 있지만 top() 있지만 bottom()stack 있습니다. 왜 이렇게이다?불일치

+5

'큐'와'스택'은 컨테이너가 아닙니다. – juanchopanza

+2

스택이기 때문에. 스택이 정의 된 방식이기 때문에 선입 선출 방식으로 의도적으로 제한됩니다. 큐는 선입 선출 방식이므로 양쪽 끝 모두에 액세스해야합니다. –

+1

'list'는 push_back과 push_front를 쉽게 추가 할 수 있습니다 만,'vector'는 push_back 만 있습니다. 이 경우 작업을 구현할 수있는 효율성이 그 이유입니다. – jahhaj

답변

8

stack의 유일한 이유는 포장 된 컨테이너 (예 : 상단에만 액세스)를 제외하고 포장 된 컨테이너에 대한 액세스를 금지하기 위해서입니다. 스택으로 사용할 수 있지만 스택으로 만 작동하는 것으로 제한되지 않는 컨테이너를 원하면 vector과 같은 다른 시퀀스 컨테이너를 사용할 수 있습니다.

마찬가지로, queue의 유일한 이유는 대기열 (즉, 앞면과 뒷면에 액세스) 이외의 포장 된 컨테이너에 대한 액세스를 금지하기 위해서입니다. 대기열로 사용할 수 있지만 대기열로만 작업하는 것이 아닌 컨테이너를 원할 경우 원시 vector과 같은 다른 순서 컨테이너를 사용할 수 있습니다.

2

일반적으로 큐는 FIFO (First In First Out) 버퍼를 나타냅니다. 양쪽 끝 모두에 액세스 할 수 있습니다. 한쪽 끝은 가장 최근 항목이 있고 다른 쪽 끝은 가장 오래된 항목이 있습니다. 큐에 요소를 추가하는 코드에서 가장 최근의 항목에 액세스하고 큐에서 항목을 처리하는 코드에서 가장 오래된 항목에 액세스하려고 할 수 있습니다.

스택은 일반적으로 후입 선출 (LIFO) 버퍼를 나타냅니다. 스택에 추가 된 가장 최근 항목 인 한쪽 끝에만 액세스 할 수 있습니다. 따라서 top() 및 bottom()이 필요합니다.