キューとスタックは広く言及されている構造です。ただし、C ++では、キューの場合、次の2つの方法で実行できます。
#include <queue>
#include <deque>
しかし、スタックの場合は、このようにすることしかできません
#include <stack>
私の質問は、キューと両端キューの違いは何ですか、なぜ2つの構造が提案されたのですか?スタックの場合、他の構造を含めることができますか?
回答:
モロン/アーリヤバタは正しいですが、もう少し詳細が役立つかもしれません。
キューとスタックは、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()
キューの。
dequeに関しては、両端に挿入できるキュー以上のものです。特に、ランダムアクセスがありますoperator[]
。これにより、ベクトルのようになりますが、最初にpush_front()
とで挿入および削除できるベクトルになりますpop_front()
。
詳細については、dequeを参照してください。
Queue
:一方の端にのみ挿入し、もう一方の端から取り外すことができます。
Deque
:両端から出し入れできます。
使用するのでDeque
、あなたは、モデル化できるQueue
だけでなく、Stack
。
ヒント:
Deque
"の略であるD ouble電子nded QUE UE"。
queue
コンテナの要件を満たしていません。天国のために、イテレータはありません!
std::stack
はstd::deque
デフォルトでバッキングコンテナとしてを使用します。私はここで理由を推測します:stackoverflow.com/questions/102459/…(基本的に、成長することdeque
は低いオーバーヘッドです)。
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
)。
queue
、VSもマップようだpop
とpop_front
、とpush
するpush_back
私は、これは実装に依存していると思いますので、。
pop_front
そしてpush_back
必要なものです。謝罪いたします。
優先キューのデキューは、エンキューの順序ではなく、いくつかの順序(優先)の比較に従って行われます。
たとえば、時間指定されたイベントを、最も早いイベントを最初に引き出し、そのスケジュールされた時間をクエリして、その時点までスリープできるようにする場合があります。
優先キューは、多くの場合、ヒープを使用して実装されます。
マイクアンダーソンによってここに:https:
//www.quora.com/What-is-the-difference-between-a-priority-queue-and-a-queue
stack
そしてqueue
ちょうど制限deque
の完全な機能セットから。