Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ コンテナアダプタ:スタック、キュー、プライオリティキュー | イントロダクション
C++ STLコンテナとアルゴリズム

bookコンテナアダプタ:スタック、キュー、プライオリティキュー

メニューを表示するにはスワイプしてください

Note
定義

C++のコンテナアダプタは、既存のコンテナ型に対して簡略化され、制限されたインターフェースを提供するラッパー。

シーケンスコンテナや連想コンテナとは異なり、std::stackstd::queuestd::priority_queueのようなアダプタはイテレータを隠し、要素へのアクセスを制限。特定のデータ構造をモデル化し、push、pop、top/frontアクセスなど明確で限定的な操作のみを提供。

  • スタック(LIFO)
  • キュー(FIFO)
  • 優先度付きキュー(ヒープベース)

アダプタは、std::dequestd::vectorstd::listなどの既存コンテナをラップし、操作を転送しつつアクセスを制限することでこれを実現。厳密なスタック、キュー、優先度付きキューの抽象化が必要で、要素への直接アクセスやイテレーションが不要な場合にコンテナアダプタを使用。

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> #include <stack> #include <queue> int main() { std::stack<int> s; s.push(10); s.push(20); std::cout << "Stack top: " << s.top() << "\n"; s.pop(); std::cout << "Stack top after pop: " << s.top() << "\n"; }

std::priority_queue アダプタは、要素のコレクションをヒープ順序で管理し、デフォルトで最大の要素が常にトップでアクセスできるようにする機能を提供します。内部的には、std::vector などのランダムアクセスコンテナを使用し、std::push_heapstd::pop_heap のようなアルゴリズムでヒープ不変条件を維持します。

std::priority_queue は、最も優先度の高い要素への高速アクセスや効率的な挿入・削除が必要で、他の要素へのイテレーションやランダムアクセスが不要な場合に適しています。スケジューリング、イベントシミュレーション、優先度に基づく取得が重要な動的集合を扱うシナリオに最適です。

main.cpp

main.cpp

copy
12345678910111213141516171819202122232425
#include <iostream> #include <queue> #include <vector> #include <string> struct Task { int priority; std::string description; // Higher priority comes first bool operator<(const Task& other) const { return priority < other.priority; } }; int main() { std::priority_queue<Task> tasks; tasks.push({3, "Write report"}); tasks.push({1, "Check email"}); tasks.push({5, "Fix bug"}); while (!tasks.empty()) { std::cout << "Next task: " << tasks.top().description << " (priority " << tasks.top().priority << ")\n"; tasks.pop(); } }
question mark

どのC++コンテナアダプタが後入れ先出し(LIFO)データ構造を提供しますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  6
some-alt