メモリなどでstackという言葉を聞いたことがあると思います。
STLにおけるstackは、コンテナアダプタです。stack自信にはコンテナを有していません。
dequeを利用しています。この時dequeを「基盤コンテナ」と呼ぶことがあります。
基盤コンテナにはこの他に、vector, listなどを利用することも可能です。
stack<int> st;とすれば、基盤コンテナはdequeです。
vectorを基盤コンテナにしたい時は、
stack<int, vector<int> > st;とします。
通常はdequeを基盤コンテナにします。 stackのメンバ関数にはpush, pop, size, empty, topがあります。 結局これらの関数は基盤コンテナの関数を利用しています。
では、サンプルを見てみましょう。
// stack01.cpp
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> st;
int n;
while (1) {
cout << "正の整数(0で終了)---";
cin >> n;
if (n == 0)
break;
st.push(n);
}
cout << "入力が終了しました。" << endl;
while (!st.empty()) {
cout << st.top() << endl;
st.pop();
}
return 0;
}
では、実行結果を見てみましょう。
pushしたものをpopで取り出しています。
Update Oct/12/2004 By Y.Kumei