【すたっく】
スタック とは?
最終更新:
💡 「後から積んだお皿から取り出す」積み上げ型のデータ管理
データを後入れ先出し(LIFO)で管理するデータ構造。積んだお皿を上から取るように、最後に追加した要素から先に取り出す。関数の呼び出し管理などに使われる。
📌 このページのポイント
スタックって何?
お皿を積み上げるようにデータを扱う仕組みだよ。追加する操作をpush、取り出す操作をpopと呼ぶ。A、Bの順に積んでからCを追加すると、次のpopで取り出すのはCになるんだ。
最初に入れたAはいつ出るの?
コールスタックって聞いたことがある!
関数の実行位置や呼び出し関係を管理する仕組みだよ。ある関数が別の関数を呼ぶと、その情報が積まれ、呼ばれた関数が終わると元の処理へ戻る。深い再帰などで使える領域を超えると、スタックオーバーフローが起こり得るんだ。
「元に戻す」にも使える?
操作を記録して逆順に取り消す考え方に使えるよ。たとえばQtのQUndoStackは、文書への操作を保持してundoとredoを提供する。やり直しや現在位置の管理も必要なので、単に履歴を捨てるだけの仕組みとは限らないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「スタック」って出てきたら「後から積んだデータから先に取り出す仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Stack」 = 積み重ね・積み上げたもの
💬 英語で「積み上げた山」を意味する。皿を積み上げて一番上から取るイメージがそのまま名前になっているよ