std::stack
From cppreference.com
| ヘッダ <stack> で定義 |
||
| template< class T, |
||
std::stack クラスは、プログラマーに スタック の機能、特に LIFO (後入れ先出し) データ構造の機能を提供する コンテナアダプタ です。
このクラステンプレートは基になるコンテナのラッパーとして機能し、特定の関数セットのみが提供されます。スタックは、基になるコンテナの末尾 (スタックのトップとして知られる) から要素をプッシュおよびポップします。
|
|
(C++26以降) |
目次 |
[編集] テンプレートパラメータ
| T | - | 格納される要素の型です。TがContainer::value_typeと同じ型でない場合、プログラムは不正形式です。 |
| コンテナ | - | 要素を格納するために使用する基になるコンテナの型。コンテナは SequenceContainer の要件を満たさなければなりません。さらに、通常の意味を持つ以下の関数を提供しなければなりません。
標準コンテナ std::vector (std::vector<bool> を含む)、std::deque、および std::list はこれらの要件を満たします。デフォルトでは、特定のスタッククラスのインスタンス化に対してコンテナクラスが指定されていない場合、標準コンテナ 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 を構築する(公開メンバ関数) | |
stack を破棄する(公開メンバ関数) | |
| コンテナアダプタに値を割り当てる (公開メンバ関数) | |
要素アクセス | |
| トップ要素にアクセスする (public member function) | |
容量 | |
| コンテナアダプタが空かどうかをチェックする (public メンバ関数) | |
| 要素数を返す (public メンバ関数) | |
変更 | |
| 要素をトップに挿入する (public member function) | |
| (C++23) |
要素の範囲をトップに挿入する (public member function) |
| (C++11) |
要素をトップにインプレースで構築する (公開メンバ関数) |
| トップ要素を削除する (public member function) | |
| (C++11) |
内容を交換する (public メンバ関数) |
[編集] 非メンバ関数
2つの stack の値を辞書順に比較する(関数テンプレート) | |
| (C++11) |
std::swap アルゴリズムを特殊化する (関数テンプレート) |
[編集] ヘルパークラス
| std::uses_allocator 型特性を特殊化する (クラス テンプレート特殊化) | |
| (C++23) |
std::stack の書式設定サポート(class template specialization) |
推論補助 |
(C++17以降) |
[編集] 備考
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | コンテナのRangeコンストラクタとRange挿入 |
__cpp_lib_constexpr_containers |
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と同じ型でない場合、不正形式 |
[編集] 関連項目
| リサイズ可能な連続配列 (クラステンプレート) | |
| 空間効率の良い動的ビットセット (class template specialization) | |
| 両端キュー (クラステンプレート) | |
| 双方向リンクリスト (クラステンプレート) |