【C++】std::stackの使い方について詳しく解説

stackは、プログラミング初心者から上級者まで幅広く使われるコンテナの一つです。

本記事では、stackの基本的な使い方から応用的な使い方までをサンプルコードを交えて詳しく解説します。

目次から探す

stackとは

stackは、データを一時的に格納するためのデータ構造の一つです。

LIFO(Last In First Out)という方式で、最後に追加された要素が最初に取り出されます。

C++のSTL(Standard Template Library)には、stackを扱うためのクラスが用意されています。

stackの基本的な使い方

stackの宣言方法

stackを使用する前に、まずはstackを宣言する必要があります。以下は、int型の値を格納するstackを宣言する例です。

#include <stack>
using namespace std;

int main() {
    stack<int> s;
    return 0;
}

要素の追加

stackに要素を追加する場合は、push()メソッドを使用します。以下は、3つの整数値をstackに追加する例です。

#include <iostream>
#include <stack>
using namespace std;

int main() {
    stack<int> s;
    s.push(1);
    s.push(2);
    s.push(3);

    return 0;
}

要素の取り出し

stackから要素を取り出す場合は、pop()メソッドを使用します。以下は、先ほど追加した3つの整数値を、最後に追加された要素から順番に取り出す例です。

#include <iostream>
#include <stack>
using namespace std;

int main() {
    stack<int> s;
    s.push(1);
    s.push(2);
    s.push(3);

    while (!s.empty()) {
        cout << s.top() << endl; // 最後に追加された要素から順番に表示
        s.pop();
    }

    return 0;
}
3
2
1

要素数の取得

現在格納されている要素数を知る場合は、size()メソッドを使用します。以下は、先ほど追加した3つの整数値が格納されていることを確認する例です。

#include <iostream>
#include <stack>
using namespace std;

int main() {
    stack<int> s;
    s.push(1);
    s.push(2);
    s.push(3);

    cout << "size: " << s.size() << endl; // size: 3

    return 0;
}
size: 3

以上がC++でSTLの中で提供されているstackクラスの基本的な使い方です。

目次から探す