namespace std {
template <class T, class Container = deque<T>>
class queue;
}
概要
queue
はコンテナアダプタであり、FIFO (first-in first-out) の動作――コンテナの一方から要素が挿入され、反対側から要素を取り出す――を実現する目的で設計されている。要素をコンテナの back()
側から挿入し、front()
側から取り出す。
queue
は、所定のメンバ関数を持つコンテナのオブジェクトを内部実装として用いており、標準のコンテナ、もしくは独自に実装したコンテナを指定することができる。
このコンテナに必要な要件は、以下のメンバ関数を持つことである。
front()
back()
push_back()
pop_front()
emplace_back()
(C++11)
この要件を満たすものとしては deque
と list
があり、デフォルトではdeque
が使用される。
queue
は2つのテンプレート引数を持つ。各テンプレートパラメータの意味は以下の通りである。
T
: 要素の型Container
: 内部実装のコンテナクラス
以下のリファレンス中では、テンプレート引数として同じ名前を用いる。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | |
empty |
要素が空であるかを確認する | |
size |
要素数を取得する | |
front |
次の要素にアクセスする | |
back |
最後の要素にアクセスする | |
push |
要素を追加する | |
push_range |
Rangeの要素を追加する | C++23 |
emplace |
直接構築で要素を追加する | C++11 |
pop |
次の要素を削除する | |
swap |
他のqueue オブジェクトと値を入れ替える |
C++11 |
protectedメンバ変数
変数名 | 型 | 対応バージョン |
---|---|---|
c |
Container |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
value_type |
Container::value_type |
|
reference |
Container::reference |
C++11 |
const_reference |
Container::const_reference |
C++11 |
size_type |
Container::size_type |
|
container_type |
Container |
非メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
operator== |
等値比較 | |
operator!= |
非等値比較 | |
operator<=> |
三方比較 | C++20 |
operator< |
左辺が右辺より小さいかの判定を行う | |
operator<= |
左辺が右辺以下かの判定を行う | |
operator> |
左辺が右辺より大きいかの判定を行う | |
operator>= |
左辺が右辺以上かの判定を行う | |
swap |
2つのqueue オブジェクトを入れ替える |
C++11 |
推論補助
名前 | 説明 | 対応バージョン |
---|---|---|
(deduction_guide) |
クラステンプレートの推論補助 | C++17 |
例
#include <iostream>
#include <queue>
int main()
{
std::queue<int> que;
// 要素を追加
que.push(1);
que.push(2);
que.push(3);
while (!que.empty()) {
std::cout << que.front() << " "; // 先頭要素を参照する
que.pop(); // 先頭要素を削除
}
}
18
#include <iostream>
#include <queue>
int main()
{
std::queue<int> que;
// 要素を追加
que.push(1);
que.push(2);
que.push(3);
while (!que.empty()) {
std::cout << que.front() << " "; // 先頭要素を参照する
que.pop(); // 先頭要素を削除
}
}
出力
1 2 3