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

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

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

C++ STLにおけるList(リスト)とは?

Listは、シーケンス内の任意の位置に対して定数時間での挿入と削除を可能にするデータ構造です。Listは双方向連結リストとして実装されており、非連続的なメモリ割り当てが可能です。

配列(array)、vector、dequeと比較して、Listはコンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。また、Listはforward_listと似ていますが、forward_listは単方向連結リストであり、前方方向にしかイテレートできない点が異なります。

list::empty()とは?

list::empty() はC++ STLに組み込まれている関数で、ヘッダーファイル <list> 内で宣言されています。この関数は、指定されたリストコンテナが空(サイズが0)かどうかをチェックし、リストが空であれば true を、空でなければ false を返します。

構文

bool list_name.empty();

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

戻り値

コンテナのサイズが0の場合は true を、サイズが0でない場合は false を返します。

使用例1:リストが空かどうかを確認する

以下のコードでは、empty() 関数を呼び出してリストが空かどうかを確認し、その後 push_back() 関数を使って要素を挿入した結果を確認しています。

#include <bits/stdc++.h>
using namespace std;
int main() {
    list<int> myList; // リストを作成
    // empty()関数を呼び出してリストが空かどうかを確認
    if (myList.empty())
        cout << "my list is empty\n";
    else
        cout << "my list isn't empty\n";
    // push_back()を使ってリストに要素を挿入
    myList.push_back(1);
    myList.push_back(2);
    myList.push_back(3);
    myList.push_back(4);
    if (myList.empty())
        cout << "my list is empty\n";
    else
        cout << "my list is not empty\n";
    return 0;
}

出力結果

上記のコードを実行すると、次のような出力が生成されます。

my list is empty
my list is not empty

使用例2:empty()を使ったループ処理

次のコードでは、1から10までの数値の積を計算しています。処理の流れは以下の通りです。

  • push_back() 関数を使ってリストに要素を挿入する

  • empty() 関数を使用して、リストが空になるまでリストを走査する

  • 結果を出力する

#include <bits/stdc++.h>
using namespace std;
int main() {
    list<int> myList;
    int product = 1; // 積を計算するため初期値は1
    // 1から10までの要素をリストに挿入
    for (int i = 1; i <= 10; ++i)
        myList.push_back(i);
    // リストが空になるまで先頭要素を取り出して積を計算
    while (!myList.empty()) {
        product *= myList.front();
        myList.pop_front();
    }
    cout << "product of numbers from 1-10 is: " << product << '\n';
    return 0;
}

出力結果

上記のコードを実行すると、次のような出力が生成されます。

product of numbers from 1-10 is: 3628800

まとめ

list::empty() 関数は、リストコンテナが空かどうかを簡単に判定できる便利な関数です。特に、while (!list.empty()) のようにループ条件として使うことで、リストの全要素を安全に処理し終えることができます。要素数を取得する size() 関数との違いは、empty() の方が意図が明確で効率的である点です。リスト操作を行う際には、ぜひ活用してみてください。

  1. C++ STLのlist::reverse()関数の使い方と実例解説

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

  2. C++STLのlist back()関数の使い方を解説

    C++のlist back()関数とは本記事では、C++におけるlist back()関数の動作について詳しく解説します。list::back()関数は、C++標準テンプレートライブラリ(STL)の一部であり、リストの最後(末尾)の要素を取得・表示するために使用されます。この関数を呼び出す前に、必ず<list>ヘッダーファイルをインクルードする必要がある点に注意してください。構文List_Name.back();パラメータこの関数は、いかなるパラメータも受け取りません。戻り値この関数は、リストの最後の要素の値を返します。なお、リストが空の場合の動作は未定義となるため、呼び出し前にリ