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にするためのシンプルで便利な関数です。クリア後もコンテナオブジェクト自体は破棄されないため、同じ変数を使い回して新しい要素を格納できます。不要になった大量のデータを解放したい場合などに活用するとよいでしょう。
-
C++ STLのlist::reverse()関数の使い方と実例解説
本記事では、C++におけるlist::reverse()関数の動作、構文、具体的な使用例について詳しく解説します。STLにおけるlistとはlistは、シーケンス内の任意の位置で定数時間O(1)での要素の挿入・削除を可能にするデータ構造です。listは双方向連結リストとして実装されており、メモリの非連続的な割り当てが可能です。配列、vector、dequeと比較すると、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。listはforward_listと似ていますが、forwar
-
C++STLのlist back()関数の使い方を解説
C++のlist back()関数とは本記事では、C++におけるlist back()関数の動作について詳しく解説します。list::back()関数は、C++標準テンプレートライブラリ(STL)の一部であり、リストの最後(末尾)の要素を取得・表示するために使用されます。この関数を呼び出す前に、必ず<list>ヘッダーファイルをインクルードする必要がある点に注意してください。構文List_Name.back();パラメータこの関数は、いかなるパラメータも受け取りません。戻り値この関数は、リストの最後の要素の値を返します。なお、リストが空の場合の動作は未定義となるため、呼び出し前にリ