パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C++ stack(スタック)の使い方



スタックとは?

  • スタックとはデータ構造の1種であり、最初に入れたデータが最後に取り出されるという特徴がある(First In Last Outの略でFILO方式と言うそうです)。
  • スタックについて詳しく知りたい方はWikiなどを参考にしてください⇒スタック - Wikipedia
  • また、こちらの日本語リファレンスを参考にしました⇒stack - cpprefjp C++日本語リファレンス



宣言

  • #include <stack>して、
std::stack<int> stack;

というように宣言することで、データを格納するための箱が作られる。

stackの箱




データの追加

スタックの変数名.push(格納する値);


サンプルコード

スタックは重ねていくようにデータを追加するので、最後に追加した3が一番上にくる。

//int型のスタックの設定
std::stack<int> stack;

//値の格納
stack.push(1);
stack.push(2);
stack.push(3);

push




値の取り出し(top)

最後に入れた値を取得できます。

スタックの変数名.top();


サンプルコード

スタックは入れたのが後のデータから順に取り出されるため、xには3が格納される。

//int型のスタックの設定
std::stack<int> stack;

//値の格納
stack.push(1);
stack.push(2);
stack.push(3);

// 値の取り出し(x = 3)
int x = stack.top();





値の除去(pop)

最後に入れた値を除去できます。

スタックの変数名.Peek();


サンプルコード

  • pop実行後は、1, 2が入っている。
//値の格納
stack.push(1);
stack.push(2);
stack.push(3);

// 値の除去
stack.pop();

push




格納している全要素の表示

サンプルコード

  • topを使って末尾の値を取得し、popで末尾の値を削除するといったことをwhile文で繰り返します。
  • while文実行後にstackは空になっている点に注意。
//int型のスタックの設定
std::stack<int> stack;

//値の格納
stack.push(1);
stack.push(2);
stack.push(3);

// サイズ表示
std::cout << "stack.size() = " << stack.size() << std::endl;

// 表示
while (!stack.empty()) {
    std::cout << stack.top() << " "; // 末尾要素を参照する
    stack.pop(); // 末尾要素を削除
}


実行結果

3, 2, 1, 





スタックの大きさの取得

スタックの変数名.size()


サンプルコード

//int型のスタックの設定
std::stack<int> stack;

//値の格納
stack.push(1);
stack.push(2);
stack.push(3);

// サイズ表示
std::cout << "stack.size() = " << stack.size() << std::endl;


実行結果

stack.size() = 3