- stack[meta header]
- std[meta namespace]
- class template[meta id-type]
namespace std {
template <class T, class Container = deque<T>>
class stack;
}
- deque[link /reference/deque/deque.md]
stack
はコンテナアダプタであり、LIFO (last-in first-out) の動作――コンテナの一方から要素が挿入され、挿入された側から要素を取り出す――を実現する目的で設計されている。要素をコンテナの back()
側から挿入し、同じく back()
側から取り出す。
stack
は、所定のメンバ関数を持つコンテナのオブジェクトを内部実装として用いており、標準のコンテナ、もしくは独自に実装したコンテナを指定することができる。
このコンテナに必要な要件は、以下のメンバ関数を持つことである。
back()
push_back()
pop_back()
emplace_back()
(C++11)
この要件を満たすものとしては vector
、deque
、list
があり、デフォルトでは deque
が使用される。
stack
は2つのテンプレートパラメータを持つ。各テンプレートパラメータの意味は以下の通りである。
T
: 格納される要素の型
Container
: 要素へのアクセス・保存に用いる内部実装のコンテナクラス
変数名 |
型 |
対応バージョン |
c |
Container |
|
名前 |
説明 |
対応バージョン |
container_type |
Container |
|
value_type |
Container::value_type |
|
size_type |
Container::size_type |
|
reference |
Container::reference |
C++11 |
const_reference |
Container::const_reference |
C++11 |
#include <iostream>
#include <stack>
int main ()
{
std::stack<int> st;
// 要素を追加
st.push(1);
st.push(2);
st.push(3);
while (!st.empty()) {
std::cout << st.top() << " "; // 末尾要素を参照する
st.pop(); // 末尾要素を削除
}
}
- std::stack[color ff0000]
- st.push[link stack/push.md]
- st.empty()[link stack/empty.md]
- st.pop()[link stack/pop.md]