C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのstack::empty()とstack::size()関数の使い方を徹底解説


本記事では、C++ STLにおけるstack::empty()関数とstack::size()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。

C++ STLにおけるスタック(stack)とは?

スタックとは、LIFO(Last In First Out:後入れ先出し)方式でデータを管理するデータ構造です。要素の挿入(push)と削除(pop)は、常に最後に追加された要素の位置である「トップ」から行われます。例えば皿を積み重ねる作業を想像してみてください。新しい皿を加えるときは山の一番上に置き、皿を取り出すときも同じく一番上から取り出します。これこそがスタックの基本的な動作です。

stack::empty()とは?

stack::empty()関数は、C++ STLに標準で用意されている組み込み関数の一つで、<stack>ヘッダーファイル内で定義されています。この関数は、関連付けられたコンテナが空かどうかを判定し、その結果に応じてtrueまたはfalseを返します。

ここでいう「コンテナが空である」とは、コンテナのサイズ(要素数)が0であることを意味します。

構文

stack_name.empty();

パラメータ

この関数は引数を受け取りません。

戻り値

コンテナが空の場合はtrueを、要素が1つでも存在する場合はfalseを返します。

入力例

std::stack<int> stack1;
stack1.emplace(1);
stack1.emplace(2);
stack1.emplace(3);
stack1.empty();

出力結果

false

入力例

std::stack<int> stack2;
stack2.empty();

出力結果

true

使用例

#include <iostream>
#include <stack>
using namespace std;
int main(){
    stack<int> stck;
    int Product = 1;
    stck.push(1);
    stck.push(2);
    stck.push(3);
    stck.push(4);
    stck.push(5);
    stck.push(6);
    while (!stck.empty()){
        Product = Product * stck.top();
        stck.pop();
    }
    cout<<"\nProduct of elements in stack are: "<<Product;
    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

Product of elements in stack are: 720

stack::size()とは?

stack::size()関数もまた、C++ STLに標準で用意されている組み込み関数の一つで、<stack>ヘッダーファイル内で定義されています。size()は、関連付けられたコンテナのサイズを取得し、コンテナ内に格納されている要素数を整数値として返します。

なお、コンテナが空の場合、size()は0を返します。

構文

stack_name.size();

パラメータ

この関数は引数を受け取りません。

戻り値

この関数は、コンテナのサイズ(要素数)を返します。

入力例

std::stack<int> stack1;
stack1.emplace(1);
stack1.emplace(2);
stack1.emplace(3);
stack1.size();

出力結果

3

入力例

std::stack<int> stack2;
stack2.size();

出力結果

0

使用例

#include <iostream>
#include <stack>
using namespace std;
int main(){
    stack<int> stck;
    int Product = 1;
    stck.push(1);
    stck.push(2);
    stck.push(3);
    stck.push(4);
    stck.push(5);
    stck.push(6);
    cout<<"size of stack is: "<<stck.size();
    while (stck.size()>0){
        Product = Product * stck.top();
        stck.pop();
    }
    cout<<"\nProduct of elements in stack are: "<<Product;
    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が得られます。

size of stack is: 6
Product of elements in stack are: 720
  1. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス

  2. C++ STLのlist::empty()関数の使い方を徹底解説!構文・戻り値・実例付き

    本記事では、C++ STLにおける list::empty() 関数の動作、構文、そして具体的な使用例について詳しく解説します。 C++ STLにおけるList(リスト)とは? Listは、シーケンス内の任意の位置に対して定数時間での挿入と削除を可能にするデータ構造です。Listは双方向連結リストとして実装されており、非連続的なメモリ割り当てが可能です。 配列(array)、vector、dequeと比較して、Listはコンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。また、Li