ProgramingTip

C ++ deque 대 큐 대 스택

bestdevel 2020. 10. 23. 08:11
반응형

C ++ deque 대 큐 대 스택


참조되는 구조입니다. 그러나 C ++에서는 큐에 대해 두 가지 방법으로 수행 할 수 있습니다.

#include <queue>
#include <deque>

하지만 스택의 경우 다음과 같이 할 수 있습니다.

#include <stack>

내 질문은 언급과 deque의 차이점은 무엇이며 두 가지 구조가 제안 된 이유는 무엇입니까? 스택의 경우 다른 구조가 있습니까?


Moron / Aryabhatta는 그러나 조금 더 자세히 설명하면 도움이 될 수 있습니다.

대기열 및 스택은 deque, vector 또는 list보다 상위 수준의 컨테이너입니다. 즉, 낮은 수준의 컨테이너에서 만들거나 스택을 쌓을 수 있습니다.

예를 들면 :

  std::stack<int, std::deque<int> > s;
  std::queue<double, std::list<double> > q;

deque를 기본 컨테이너로 사용하고 목록을 기본 컨테이너로 사용하는 더블 큐를 사용하여 int 스택을 빌드합니다.

s결백 q목록으로 생각할 수 있습니다 .

필요한 것은 하위 수준 컨테이너가 상위 수준 컨테이너에 필요한 방법을 구현하는 것입니다. 이들은 back(), push_back()그리고 pop_back()스택과 front(), back(), push_back(), 그리고 pop_front()큐.

자세한 내용은 스택설명참조하십시오 .

데크와 관련하여 거기에 삽입 할 수있는 많은 역할을합니다. 특히 랜덤 액세스 권한이 있습니다 operator[]. 이것은 벡터와 미래하지만 처음에 push_front()및로 삽입하고 수있는 벡터 pop_front()입니다.

자세한 내용은 deque참조하십시오 .


Queue: 한쪽 끝만 삽입하고 다른 쪽 끝은 제거 할 수 있습니다.

Deque: 양쪽 끝에서 삽입 및 제거가 가능합니다.

사용 a 그래서 Deque, 당신은을 모델링 할 수 Queue뿐만 아니라 Stack.

힌트 :
Deque" D ouble e

nded que ue"의 줄임말입니다 .


deque컨테이너 템플릿입니다. .NET Framework와 매우 많은 임의 액세스 반복 기가있는 시퀀스에 대한 요구 사항을 좋아합니다 vector.

queue컨테이너가 아니라 어댑터 입니다. 여기에는 컨테이너가 포함되어있어보다 구체적인 다른 인터페이스를 제공합니다. 사용 queue당신은 기억 (또는 생각 나게)의 작업을 이외하지 않도록하려는 경우 push[_back]pop[_front], frontback, sizeempty. queue처음과 마지막을 제외하고 내부의 요소를 전혀 볼 수 없습니다 !


C ++ 라이브러리에서 std::stack둘 다 std::queue컨테이너 어댑터 로 구현 됩니다. 즉, 스택 또는 큐의 인터페이스를 제공하는 실제로 실제로는 자체가 아닙니다. 대신, 그들은 다른 컨테이너를 사용 (예를 들어, std::deque또는 std::list실제로 데이터를 저장) 및 std::stack클래스는 단지 번역하는 코드의 작은 비트를 가지고 pushpoppush_backpop_back(과 std::queue거의 같은 작업을 수행하지만, 사용 push_backpop_front).


deque는 양쪽 끝에서 쉽게 삽입 / 제거 할 수있는 양단 안쪽입니다. 쪽 끝에서 검색 할 수 있습니다.


deque는 전면 및 전면에서 삽입 / 팝 지원

더 많은 것들이 삽입하고 앞쪽에서 팝만 지원합니다. FIFO (선입 선출)입니다.


우선 순위 순서에서 순서에서 빼는 순서가 아닌 순서 순서 (우선 순위) 비교에 따라 발생합니다.

예를 들어 가장 빠른 이벤트를 먼저 꺼내고 예정된 시간을 쿼리하여 해당 시점까지 잠을 잘 수 있습니다.

우선 순위는 종종 힙을 사용하여 구현됩니다.

Mike Anderson 작성자 :
https://www.quora.com/What-is-the-difference-between-a-priority-queue-and-a-queue


In deque (double ended queue) 요소를 제거하기 앞에서 제거하고 뒤로 제거 할 수 있습니다 (큐 스택과 동일), 큐 스택과 동일합니다.


deque는 양면입니다. 내용은 말할 것입니다.

참고 URL : https://stackoverflow.com/questions/2247982/c-deque-vs-queue-vs-stack

반응형