std:: stack
|
ヘッダーで定義
<stack>
|
||
|
template
<
class
T,
|
||
std::stack
クラスは、
コンテナアダプタ
であり、プログラマに
スタック
の機能、具体的にはLIFO(後入れ先出し)データ構造の機能を提供します。
クラステンプレートは、基盤となるコンテナのラッパーとして機能します - 特定の関数セットのみが提供されます。スタックは、基盤となるコンテナの背面(スタックのトップとして知られる)から要素をプッシュおよびポップします。
std::stackのすべてのメンバー関数は
std::stack
は
constexpr
です:定数式の評価において
std::stack
オブジェクトを作成して使用することが可能です。
ただし、
|
(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
の値を辞書順で比較する
(関数テンプレート) |
|
|
(C++11)
|
std::swap
アルゴリズムを特殊化する
(関数テンプレート) |
ヘルパークラス
|
(C++11)
|
std::uses_allocator
型特性の特殊化
(クラステンプレートの特殊化) |
|
(C++23)
|
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
と同じ型でない場合は不適格
|
関連項目
|
サイズ変更可能な連続配列
(クラステンプレート) |
|
|
省スペースな動的ビットセット
(クラステンプレート特殊化) |
|
|
両端キュー
(クラステンプレート) |
|
|
双方向リンクリスト
(クラステンプレート) |