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

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

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

STLにおけるlistとは?

listは、シーケンス内の任意の位置で定数時間での挿入と削除を可能にするコンテナです。listは双方向リンクリストとして実装されており、非連続的なメモリ割り当てを行います。配列、vector、dequeと比較して、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。listはforward_listと似ていますが、forward_listは単方向リンクリストであり、前方方向にしかイテレートできない点が異なります。

list::empty()とは?

list::empty()はC++ STLに組み込まれている関数で、<list>ヘッダーファイルで宣言されています。この関数は、listコンテナが空(サイズが0)かどうかを確認するために使用されます。

構文

listname.empty( )

戻り値

listが空の場合はtrueを返し、空でない場合はfalseを返します。

入力リスト:50 60 80 90
出力:false

入力リスト:(空)
出力:true

実行手順

  • まずlistを宣言します。

  • 次にlistの内容を出力します。

  • その後、empty()関数を呼び出します。

上記の手順により、listが空かどうかを簡単に確認できます。要素を追加すれば、空でないlistに対する動作も確認できます。

サンプルコード

// C++ STLにおけるlist empty( )関数の動作を示すコード
#include <iostream>
#include <list>
using namespace std;

int main( ) {
    list<int> l = { 55, 84, 38, 66, 67 };
    // リストを出力
    cout << "List: ";
    for (auto x = l.begin( ); x != l.end( ); ++x)
        cout << *x << " ";
    // empty( )関数を使用
    if (l.empty( )) {
        cout << "True";
    } else {
        cout << "false";
    }
    return 0;
}

出力

上記のコードを実行すると、以下の出力が生成されます。

入力 – List: 55 84 38 66 67
出力 – false

入力 – List: (空)
出力 – true

list::size()関数とは?

list::size()もC++ STLに組み込まれている関数で、<list>ヘッダーファイルで宣言されています。この関数はlistのサイズ、つまりlistに格納されている要素数を取得するために使用されます。

構文

listname.size( )

戻り値

list内の要素数を返します。

入力 – List: 5 6 7 8 9 10
出力 – 6

入力 – W O N D E R S
出力 – 7

実行手順

  • まずlistを宣言します。

  • 次にlistの内容を出力します。

  • その後、size()関数を使ってlistのサイズを出力します。

上記の手順により、listのサイズを簡単に取得できます。

サンプルコード

// C++ STLにおけるlist size( )関数の動作を示すコード
#include <iostream>
#include <list>
using namespace std;

int main( ) {
    list<char> l = { 'M', 'A', 'R', 'C', 'H' };
    cout << "List: ";
    for (auto x = l.begin( ); x != l.end( ); ++x)
        cout << *x << " ";
    // size( )関数でリスト内の要素数を出力
    cout << "\nSize of List: " << l.size( );
    return 0;
}

出力

上記のコードを実行すると、以下の出力が生成されます。

入力 – List: M A R C H
出力 – Size of List: 5

まとめ

list::empty()はlistが空かどうかを定数時間で判定し、list::size()は要素数を取得します。どちらも計算量はO(1)であるため、単純な条件分岐にはempty()を、具体的な要素数が必要な場合にはsize()を使うのが効率的です。これらの関数を適切に使い分けることで、listコンテナをより安全かつ効果的に操作できます。

  1. C++ STLのlistにおけるcrbegin()・crend()関数の使い方を解説

    C++のSTL(標準テンプレートライブラリ)には、リストを逆方向に走査するための便利なメンバ関数が用意されています。本記事では、list::crbegin()とlist::crend()の2つの関数の動作について詳しく解説します。これらの関数はC++標準テンプレートライブラリの一部であり、使用するには<list>ヘッダーをインクルードする必要があります。list::crbegin()とはlist::crbegin()は、リストの逆先頭(つまりリストの末尾要素)を指す定数リバースイテレータを返します。この関数を使うと、リストを末尾から先頭へ向かって辿ることができますが、イテレータを通

  2. C++ STLのlist::cbegin()とcend()関数の使い方を解説

    本記事では、C++におけるlist::cbegin()およびlist::cend()関数の動作について解説します。list::cbegin()とlist::cend()は、C++標準テンプレートライブラリ(STL)の一部として提供されているメンバ関数です。これらの関数を呼び出すには、ヘッダーファイル<list>をインクルードする必要があります。list::cbegin()とはlist::cbegin()は、リストの先頭要素を指す定数イテレータ(const_iterator)を返す関数です。このイテレータを使えばリストを走査することはできますが、リスト内の値を変更することはできません