C++ STLのforward_list::cend()関数の使い方を徹底解説
C++標準テンプレートライブラリ(STL)のforward_list::cend()関数の働きについて解説します。
通常のlistは前後両方向の要素へのリンクを保持しているため双方向の走査が可能ですが、forward_listは次の要素へのリンクのみを保持しており、前方方向にしか走査できません。
forward_list::cend()はC++標準テンプレートライブラリの一部であり、リストの末尾要素の直後(過去末尾)を指す定数イテレータを取得するために使用されます。このイテレータは実際の要素を指すものではなく、走査範囲の終端を示すマーカーとして機能します。
この関数を呼び出すには、<forward_list>ヘッダーをインクルードする必要があります。
構文
Forward_List_Name.cend();
パラメータ
この関数は引数を受け取りません。
戻り値
リストの末尾要素の直後の位置を指す定数イテレータ(const_iterator)を返します。
例
入力: forward_list<int> Lt = {8, 9, 7};
for (auto itr = Lt.cbegin(); itr != Lt.cend(); itr++)
cout << *itr << " ";
出力: 8 9 7
解説:ここでは要素8、9、7を持つリストを作成しています。cbegin()は先頭要素を指す定数イテレータを返し、cend()は末尾要素の直後を指す定数イテレータを返します。itr != Lt.cend()を条件にループすることで、リスト内のすべての要素が出力されます。
プログラムで使用しているアプローチ
- まず、int型のforward_list「Lt」を作成し、いくつかの値を代入します。
- 続いて、リストの内容を出力するためのforループを開始します。
- ループ内ではauto型のオブジェクト「itr」を作成し、cbegin()関数の戻り値(リストの先頭要素)で初期化します。
- ループの終了条件として、「itr」がcend()関数が返す末尾位置と等しくない間、と指定します。
- *itrを出力します。
アルゴリズム
開始
ステップ1→ main()関数内
forward_list<int> Lt = {} を初期化
auto itr = Lt.cbegin() とし、itr != Lt.cend() の間 itr++ を繰り返す
*itr を出力
終了
停止
例
#include<iostream>
#include<forward_list>
using namespace std;
int main() {
forward_list<int> Lt = { 9,55,6,100 };
// リストの要素を出力する
cout << "リストの要素は : " << "\n";
for (auto itr = Lt.cbegin(); itr != Lt.cend(); itr++)
cout << *itr << " ";
return 0;
}
出力
上記のコードを実行すると、次のような出力が得られます −
9 55 6 100
-
C++ STLのforward_list assign()関数の使い方を徹底解説
本記事では、C++におけるforward_listのassign()関数の動作について詳しく解説します。forward_listとはforward_listは、通常のリスト(std::list)と異なり、次の要素とのリンクのみを保持するコンテナです。通常のリストは前後両方向の要素とリンクしているため、前方・後方のどちらの方向にも反復処理が可能ですが、forward_listは前方方向にしか反復できません。その代わり、メモリ使用量が少なく、軽量な動作が特徴です。assign()関数とはforward_list::assign()関数は、C++標準テンプレートライブラリ(STL)の一部です。この関
-
C++ STLのlist::cbegin()とcend()関数の使い方を解説
本記事では、C++におけるlist::cbegin()およびlist::cend()関数の動作について解説します。list::cbegin()とlist::cend()は、C++標準テンプレートライブラリ(STL)の一部として提供されているメンバ関数です。これらの関数を呼び出すには、ヘッダーファイル<list>をインクルードする必要があります。list::cbegin()とはlist::cbegin()は、リストの先頭要素を指す定数イテレータ(const_iterator)を返す関数です。このイテレータを使えばリストを走査することはできますが、リスト内の値を変更することはできません