メモリなどで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