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

C++ STLのlist::clear()関数の使い方を徹底解説!構文と実行例

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

STLのリスト(std::list)とは?

リストは、シーケンス内の任意の位置に対して定数時間で挿入・削除を行えるデータ構造です。C++のSTLでは、リストは双方向連結リストとして実装されており、メモリ上に非連続的に要素を配置できます。


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

list::clear()とは?

list::clear()は、C++ STLに標準で組み込まれている関数で、<list>ヘッダーで宣言されています。この関数を呼び出すと、リスト全体がクリアされます。つまり、リストコンテナ内に存在するすべての要素が削除され、コンテナのサイズは0になります。

構文

list_name.clear();

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

戻り値

この関数には戻り値がありません。単にコンテナからすべての要素を削除するだけです。なお、計算量は要素数に比例するO(n)となります。

使用例1:リスト全体をクリアする

以下のコードでは、まずリストに要素を挿入し、その後clear()関数を呼び出してリスト全体を空にしています。

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> myList = { 10, 20, 30, 40, 50 };

    cout << "clear()関数を適用する前のリスト:";
    for (auto i = myList.begin(); i != myList.end(); ++i)
        cout << ' ' << *i;

    // clear()関数を適用してリストをクリア
    myList.clear();

    for (auto i = myList.begin(); i != myList.end(); ++i)
        cout << ' ' << *i;

    cout << "\nリストはクリアされました";
    return 0;
}

出力結果

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

clear()関数を適用する前のリスト: 10 20 30 40 50
リストはクリアされました

使用例2:クリア後に新しい要素を再挿入する

次のコードでは、clear()関数でリスト全体をクリアした後、新しい要素を再挿入して表示します。clear()を呼び出した後もコンテナ自体は有効であるため、そのまま要素を追加し直すことができます。

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> myList;

    myList.push_back(10);
    myList.push_back(20);
    myList.push_back(30);

    cout << "clear()関数を適用する前のリスト:";
    for (auto i = myList.begin(); i != myList.end(); ++i)
        cout << ' ' << *i;

    // リストをクリア
    myList.clear();

    for (auto i = myList.begin(); i != myList.end(); ++i)
        cout << ' ' << *i;

    cout << "\nリストはクリアされました";

    // 新しい要素を再挿入
    myList.push_back(60);
    myList.push_back(70);

    cout << "\nリスト内の要素:";
    for (auto i = myList.begin(); i != myList.end(); ++i)
        cout << ' ' << *i;

    return 0;
}

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

clear()関数を適用する前のリスト: 10 20 30
リストはクリアされました
リスト内の要素: 60 70

まとめ

list::clear()は、リストコンテナ内のすべての要素を一括で削除し、サイズを0にするためのシンプルで便利な関数です。クリア後もコンテナオブジェクト自体は破棄されないため、同じ変数を使い回して新しい要素を格納できます。不要になった大量のデータを解放したい場合などに活用するとよいでしょう。

  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();パラメータこの関数は、いかなるパラメータも受け取りません。戻り値この関数は、リストの最後の要素の値を返します。なお、リストが空の場合の動作は未定義となるため、呼び出し前にリ