Namespaces
Variants

std:: stack

From cppreference.net
ヘッダーで定義 <stack>
template <

class T,
class Container = std:: deque < T >

> class stack ;

std::stack クラスは、 コンテナアダプタ であり、プログラマに スタック の機能、具体的にはLIFO(後入れ先出し)データ構造の機能を提供します。

クラステンプレートは、基盤となるコンテナのラッパーとして機能します - 特定の関数セットのみが提供されます。スタックは、基盤となるコンテナの背面(スタックのトップとして知られる)から要素をプッシュおよびポップします。

std::stackのすべてのメンバー関数は std::stack constexpr です:定数式の評価において std::stack オブジェクトを作成して使用することが可能です。

ただし、 std::stack オブジェクト自体は一般的に constexpr にはできません。なぜなら、動的に確保されたストレージは同じ定数式の評価内で解放されなければならないためです。

(C++26以降)

目次

テンプレートパラメータ

T - 格納される要素の型。 T Container::value_type と同じ型でない場合、プログラムは不適格である。
Container - 要素を格納するために使用する基盤となるコンテナの型。コンテナは SequenceContainer の要件を満たさなければならない。さらに、以下の関数を 通常の意味論 で提供しなければならない:

標準コンテナ std::vector std::vector<bool> を含む)、 std::deque および std::list はこれらの要件を満たす。特定の stack クラスのインスタンス化に対してコンテナクラスが指定されない場合、デフォルトでは標準コンテナ std::deque が使用される。

メンバー型

定義
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)

メンバー関数

stack を構築する
(public member function)
stack を破棄する
(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つの stack の値を辞書順で比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)

ヘルパークラス

std::uses_allocator 型特性の特殊化
(クラステンプレートの特殊化)
std::stack のフォーマット対応
(クラステンプレートの特殊化)

推論ガイド

(C++17以降)

注記

機能テスト マクロ 標準 機能
__cpp_lib_containers_ranges 202202L (C++23) コンテナのためのレンジ構築と挿入
__cpp_lib_constexpr_stack 202502L (C++26) constexpr std::stack

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 307 C++98 Container std::vector<bool> ではなかった 許可
LWG 2566 C++98 Container::value_type の要件が欠落 T Container::value_type と同じ型でない場合は不適格

関連項目

サイズ変更可能な連続配列
(クラステンプレート)
省スペースな動的ビットセット
(クラステンプレート特殊化)
両端キュー
(クラステンプレート)
双方向リンクリスト
(クラステンプレート)