std:: queue
|
ヘッダーで定義
<queue>
|
||
|
template
<
class
T,
|
||
std::queue
クラステンプレートは、
コンテナアダプタ
であり、
キュー
の機能 - 具体的にはFIFO(先入れ先出し)データ構造を提供します。
このクラステンプレートは、基盤となるコンテナのラッパーとして機能します - 特定の関数セットのみが提供されます。キューは要素を基盤となるコンテナの末尾にプッシュし、先頭からポップします。
std::queueのすべてのメンバー関数は
std::queue
です
constexpr
:定数式の評価において
std::queue
オブジェクトを作成および使用することが可能です。
ただし、
|
(C++26以降) |
目次 |
テンプレートパラメータ
| T | - |
格納される要素の型。
T
が
Container::value_type
と同じ型でない場合、プログラムは不適格となる。
|
| Container | - |
要素を格納するために使用される基盤となるコンテナの型。コンテナは
SequenceContainer
の要件を満たさなければならない。さらに、以下の関数を
通常の意味論
で提供しなければならない:
標準コンテナ std::deque および std::list はこれらの要件を満たす。 |
メンバー型
| メンバー型 | 定義 |
container_type
|
Container
|
value_type
|
Container::value_type
|
size_type
|
Container :: size_type |
reference
|
Container::reference
|
const_reference
|
Container::const_reference
|
メンバーオブジェクト
| メンバー名 | 定義 |
|
Container
c
|
基盤となるコンテナ
(protected member object) |
メンバー関数
queue
を構築する
(public member function) |
|
queue
を破棄する
(public member function) |
|
|
コンテナアダプタに値を代入する
(public member function) |
|
要素アクセス |
|
|
先頭要素にアクセスする
(public member function) |
|
|
末尾要素にアクセスする
(public member function) |
|
容量 |
|
|
コンテナアダプタが空かどうかをチェックする
(public member function) |
|
|
要素数を返す
(public member function) |
|
変更操作 |
|
|
末尾に要素を挿入する
(public member function) |
|
|
(C++23)
|
末尾に要素の範囲を挿入する
(public member function) |
|
(C++11)
|
末尾に要素をその場で構築する
(public member function) |
|
先頭要素を削除する
(public member function) |
|
|
(C++11)
|
内容を交換する
(public member function) |
非メンバー関数
2つの
queue
の値を辞書順で比較する
(関数テンプレート) |
|
|
(C++11)
|
std::swap
アルゴリズムを特殊化する
(関数テンプレート) |
ヘルパークラス
|
(C++11)
|
std::uses_allocator
型特性の特殊化
(クラステンプレートの特殊化) |
|
(C++23)
|
std::queue
の書式設定サポート
(クラステンプレートの特殊化) |
推論ガイド |
(C++17以降) |
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | コンテナのためのレンジ構築と挿入 |
__cpp_lib_constexpr_queue
|
202502L
|
(C++26) |
constexpr
std::queue
|
例
#include <cassert> #include <iostream> #include <queue> int main() { std::queue<int> q; q.push(0); // backに0を追加 q.push(1); // q = 0 1 q.push(2); // q = 0 1 2 q.push(3); // q = 0 1 2 3 assert(q.front() == 0); assert(q.back() == 3); assert(q.size() == 4); q.pop(); // 先頭要素の0を削除 assert(q.size() == 3); // 全ての要素を表示して削除。std::queueはbegin()/end()をサポートしていないため、 // 範囲ベースforループは使用できないことに注意 std::cout << "q: "; for (; !q.empty(); q.pop()) std::cout << q.front() << ' '; std::cout << '\n'; assert(q.size() == 0); }
出力:
q: 1 2 3
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 307 | C++98 |
std::queue
はプロキシ参照型を使用するコンテナをサポートしていなかった
(
const
)
value_type&
の代わりに
[1]
|
サポート済み |
| LWG 2566 | C++98 |
Container::value_type
の要件が欠落
|
T
が
Container::value_type
と同じ型でない場合は不適格
|
-
↑
std::vector<bool>
のような追加で
pop_front()をサポートするコンテナなど。このDRの解決により
std::vector<bool> の std::stack および std::priority_queue に対するサポートが追加された。std::queueに関する変更は
一貫性を維持するためのものである。
関連項目
|
コンテナを適応させて優先度付きキューを提供
(クラステンプレート) |
|
|
両端キュー
(クラステンプレート) |
|
|
双方向リンクリスト
(クラステンプレート) |