キューとスタックは広く言及されている構造です。ただし、C++では、キューの場合、次の2つの方法で実行できます。
#include <queue>
#include <deque>
しかし、スタックの場合は、このようにしかできません
#include <stack>
私の質問は、キューとデキューの違いは何ですか、なぜ2つの構造が提案されたのですか?スタックの場合、他の構造を含めることができますか?
Moron/Aryabhattaは正しいですが、もう少し詳細が役立つかもしれません。
キューとスタックは、deque、vector、またはlistよりも高レベルのコンテナーです。これにより、低レベルのコンテナからキューを構築したりスタックしたりできるようになります。
例えば:
_ std::stack<int, std::deque<int> > s;
std::queue<double, std::list<double> > q;
_
基になるコンテナとしてdequeを使用してintのスタックを構築し、基になるコンテナとしてリストを使用してdoubleのキューを構築します。
s
は制限付き両端キュー、q
は制限付きリストと考えることができます。
必要なのは、下位コンテナが上位コンテナに必要なメソッドを実装することだけです。これらは、スタックのback()
、Push_back()
、およびpop_back()
、およびfront()
、back()
、Push_back()
、およびキューのpop_front()
。
詳細については、 stack および queue を参照してください。
両端キューに関しては、両端に挿入できるキュー以上のものです。特に、_operator[]
_のランダムアクセスがあります。これにより、ベクトルのようになりますが、Push_front()
およびpop_front()
で先頭から挿入および削除できるベクトルになります。
詳細については、 deque を参照してください。
Queue
:一方の端にのみ挿入し、もう一方の端から削除できます。
Deque
:両端から挿入および削除できます。
したがって、Deque
を使用すると、Queue
だけでなくStack
もモデル化できます。
ヒント:Deque
は「[〜#〜] d [〜#〜] ouble e nded que = ue」。
deque
はコンテナテンプレートです。 vector
によく似た、ランダムアクセス反復子を使用したシーケンスの要件を満たします。
queue
はコンテナではなく、アダプタです。コンテナが含まれており、より具体的な別のインターフェイスを提供します。 queue
を使用して、Push[_back]
およびpop[_front]
、front
およびback
、size
およびempty
。最初と最後以外のqueue
内の要素はまったく見ることができません!
C++ライブラリでは、std::stack
とstd::queue
の両方がコンテナアダプタとして実装されます。つまり、それぞれスタックまたはキューのインターフェイスを提供しますが、どちらも実際にはコンテナではありません。代わりに、他のコンテナ(たとえば、std::deque
またはstd::list
を使用して実際にデータを保存します)を使用し、std::stack
クラスにはPush
を変換するための小さなコードがありますおよびpop
からPush_back
およびpop_back
(およびstd::queue
はほぼ同じですが、Push_back
およびpop_front
を使用します)。
Dequeは両端キューで、両端から簡単に挿入/削除できます。キューでは、一方の端での挿入と他方の端からの取得のみが許可されます。
dequeは、前後からの挿入/ポップをサポートします
キューは背面への挿入のみをサポートし、前面からポップします。 FIFO(先入れ先出し)。
Deque(double ends queue)では、要素を後ろから挿入して、フォームback(スタックと同じ)を削除できますが、キューではフロントからのみ削除できます。
両端キューは両端があります。キューはそうではありません。
優先キューのデキューは、エンキューの順序ではなく、何らかの順序(優先順位)の比較に従って行われます。
たとえば、最も近いイベントを最初に引き出し、スケジュールされた時間を照会する場所に時間指定されたイベントを保存して、その時点までスリープできるようにします。
多くの場合、優先度キューはヒープを使用して実装されます。
ここにマイク・アンダーソン:
https://www.quora.com/What-is-the-difference-between-a-priority-queue-and-a-queue