[解決済み] 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()
.
参照 ディーク を参照してください。
関連
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】 std::unique_lock<std::mutex> と std::lock_guard<std::mutex> のどちらを選ぶ?
-
[解決済み] なぜstd::stackはデフォルトでstd::dequeを使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] なぜstd::stackはデフォルトでstd::dequeを使うのですか?