1. ホーム
  2. c++

[解決済み] c++ deque vs queue vs stack

2023-03-11 14:20:23

質問

キューとスタックは広く知られている構造です。しかし、C++では、キューについては、2つの方法で行うことができます。

#include <queue>
#include <deque>

が、スタックでは以下のようにしかできません。

#include <stack>

質問ですが、queueとdequeの違いは何ですか?なぜ2つの構造体が提案されたのですか?スタックについては、他の構造体を含めることができるのでしょうか?

どのように解決するのですか?

Moron/Aryabhattaの言うとおりですが、もう少し詳しく説明するとよいでしょう。

キューやスタックは、dequeやvector、listよりも上位のコンテナです。つまり、下位のコンテナからキューやスタックを作ることができるという意味です。

例えば

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

コンテナとしてdequeを使用してintのスタックを構築し、コンテナとしてリストを使用してdoublesのキューを構築します。

を考えることができます。 s を制限付きデクとし q を制限付きリストとして使用します。

必要なことは、下位のコンテナが上位のコンテナが必要とするメソッドを実装することである。これらは back() , push_back() そして pop_back() はスタック、そして front() , back() , push_back() そして pop_front() はキュー用です。

参照 スタック キュー を参照してください。

dequeに関しては、両端に挿入できるキューをはるかに超えるものです。特に、ランダムアクセスの operator[] . これにより、よりベクトルに近いものになりますが、ベクトルでは、最初に push_front()pop_front() .

参照 ディーク を参照してください。