• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    class template
    <queue>

    std::queue

    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)

    この要件を満たすものとしては dequelist があり、デフォルトでは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(); // 先頭要素を削除
      }
    }
    

    出力

    1 2 3 
    

    参照