キューとスタックは広く言及されている構造です。ただし、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の完全な機能セットから。