template
<
class
T,
class
Container
=
std::
deque
<
T
>
>
class
queue
;
|
|
|
|
|
|
|
std::queueクラステンプレートは、
コンテナアダプタ
であり、
キュー
の機能 - 具体的にはFIFO(先入れ先出し)データ構造を提供します。
このクラステンプレートは、基盤となるコンテナのラッパーとして機能します - 特定の関数セットのみが提供されます。キューは要素を基盤となるコンテナの末尾にプッシュし、先頭からポップします。
std::queueのすべてのメンバー関数は
std::queue
です
constexpr
:定数式の評価において
std::queue
オブジェクトを作成および使用することが可能です。
ただし、
std::queue
オブジェクト自体は一般的に
constexpr
にはなりません。なぜなら、動的に確保されたストレージは同じ定数式の評価内で解放されなければならないためです。
|
(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
|
メンバオブジェクト
| メンバ
|
説明
|
|
|
基底となるコンテナ (プロテクテッドメンバオブジェクト)
|
メンバー関数
|
|
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)
|
|
|
末尾に要素の範囲を挿入する
(public member function)
|
|
|
末尾に要素をその場で構築する
(public member function)
|
|
|
先頭要素を削除する
(public member function)
|
|
|
内容を交換する
(public member function)
|
非メンバー関数
|
|
2つの
queue
の値を辞書順で比較する
(関数テンプレート)
|
|
|
std::swap
アルゴリズムを特殊化する
(関数テンプレート)
|
ヘルパークラス
注記
例
#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);
}
出力:
不具合報告
以下の動作変更の欠陥報告書は、以前に公開された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
に関する変更は
一貫性を維持するためのものである。
関連項目
|
|
コンテナを適応させて優先度付きキューを提供
(クラステンプレート)
|
|
|
両端キュー
(クラステンプレート)
|
|
|
双方向リンクリスト
(クラステンプレート)
|
|