【C++ STL】forward_list::front()とforward_list::empty()の使い方を実例付きで解説
本記事では、C++のSTL(標準テンプレートライブラリ)に用意されているforward_list::front()およびforward_list::empty()の動作、構文、具体的な使用例について詳しく解説します。
STLにおけるforward_listとは?
forward_listは、シーケンス内の任意の位置に対して定数時間(O(1))で挿入・削除操作を行えるシーケンスコンテナです。内部は単方向リンクリストとして実装されており、各要素が持つ「次の要素へのリンク」によって順序が維持されます。std::listのような双方向リストと比べて要素あたりのメモリ消費が少なく、前方方向への走査に特化した軽量なコンテナです。
forward_list::front()とは?
forward_list::front()は、C++ STLに組み込まれている関数で、<forward_list>ヘッダーで宣言されています。front()を呼び出すと、forward_listコンテナの先頭にある要素への参照が返されます。
構文
forwardlist_container.front();
この関数は引数を受け取りません。
戻り値
コンテナの先頭要素への参照を返します。なお、空のコンテナに対してfront()を呼び出した場合の動作は未定義となるため、呼び出し前に後述のempty()で空かどうかを確認しておくと安全です。
使用例
/* 以下のコードでは、forward_listを作成して要素を挿入した後、front()関数を呼び出して先頭の要素を取得しています。 */
#include <forward_list>
#include <iostream>
using namespace std;
int main(){
forward_list<int> forwardList = {2, 6, 1, 0 };
cout<<"my first element in a forward list is: ";
cout<<forwardList.front();
return 0;
}
出力
上記のコードを実行すると、次のような出力が得られます。
my first element in a forward list is: 2
forward_list::empty()とは?
forward_list::empty()も、C++ STLに組み込まれている関数で、<forward_list>ヘッダーで宣言されています。forward_listコンテナが空であればtrue、空でなければfalseを返します。つまり、コンテナのサイズが0かどうかを判定するための関数です。
構文
bool forwardlist_container.empty();
この関数は引数を受け取りません。
戻り値
コンテナのサイズが0の場合はtrueを、要素が1つでも存在する場合はfalseを返します。
使用例
/* 以下のコードでは、まず空のforward_listを作成し、empty()関数を呼び出してリストが空と判定されるかを確認します。その後、要素を挿入してから再度empty()関数を呼び出し、結果がどう変化するかを確認しています。 */
#include <forward_list>
#include <iostream>
using namespace std;
int main(){
forward_list<int> forwardList = {};
if (forwardList.empty()){
cout << "Yes, forward list is empty\n";
}
forwardList = {1, 3, 4, 5};
if (forwardList.empty()){
cout << "Yes, forward list is empty\n";
} else {
cout << "No, forward list is not empty\n";
}
return 0;
}
出力
上記のコードを実行すると、次のような出力が得られます。
Yes, forward list is empty No, forward list is not empty
まとめ
forward_list::front()は先頭要素への参照を取得するための関数、forward_list::empty()はコンテナが空かどうかを判定するための関数です。特にfront()は、空のコンテナに対して呼び出すと未定義動作となるため、実務ではempty()による事前チェックとセットで使うのが安全です。どちらもO(1)で動作するため、パフォーマンスを気にせず効率的に利用できます。
-
C++ STLのforward_list::cend()関数の使い方を徹底解説
C++標準テンプレートライブラリ(STL)のforward_list::cend()関数の働きについて解説します。 通常のlistは前後両方向の要素へのリンクを保持しているため双方向の走査が可能ですが、forward_listは次の要素へのリンクのみを保持しており、前方方向にしか走査できません。 forward_list::cend()はC++標準テンプレートライブラリの一部であり、リストの末尾要素の直後(過去末尾)を指す定数イテレータを取得するために使用されます。このイテレータは実際の要素を指すものではなく、走査範囲の終端を示すマーカーとして機能します。 この関数を呼び出すには、<fo
-
C++STLのforward_list::cbegin()関数の使い方を徹底解説
この記事では、C++のforward_list::cbegin()関数の動作について詳しく解説します。 forward_listは、通常のlistコンテナと異なり、次の要素へのリンクのみを保持する単方向連結リストです。通常のlistは前後の要素双方とリンクしているため双方向の走査が可能ですが、forward_listは前方方向にしかイテレートできません。その代わり、メモリ消費が抑えられ軽量であるという利点があります。 forward_list::cbegin()関数はC++標準テンプレートライブラリ(STL)の一部であり、リストの最初の要素を指すイテレータを取得するために使用されます。この関数