C++ STLのforward_list::reverse()関数の使い方と動作を徹底解説
本記事では、C++標準テンプレートライブラリ(STL)に含まれる forward_list::reverse() 関数の動作について、具体例を交えながら詳しく解説します。
フォワードリスト(forward_list)とは
フォワードリストは、単方向連結リスト(片方向リンクリスト)として理解できます。要素をたどれるのは前方方向のみで、後方へさかのぼることはできません。一方、通常の list は双方向連結リストであり、各要素が「次の要素へのリンク」と「前の要素へのリンク」の2つのリンクを持っているため、前後どちらの方向にも走査できます。
フォワードリストは前方へのリンクを1つだけ保持すればよいため、その分メモリ消費が抑えられ、高速に動作します。また、要素の挿入・削除も定数時間 O(1) で行えるという大きな特徴があります。
forward_list::reverse() 関数とは
forward_list::reverse() は、C++標準テンプレートライブラリ(STL)に用意された関数で、フォワードリスト内の要素の並び順を反転させるために使用されます。
構文
forwardlist_name.reverse()
パラメータ
この関数は引数(パラメータ)を一切取りません。
戻り値
この関数には戻り値がありません。リストの順序を反転させる処理のみを実行します。
使用例
入力:要素のリスト:57 99 54 34 84 出力:反転後のリスト:84 34 54 99 57 入力:要素のリスト:40 30 60 90 70 出力:反転後のリスト:70 90 60 30 40
プログラムの処理の流れ
まずフォワードリストを初期化します。
reverse() 関数を適用する前に、フォワードリストの内容を出力します。
C++のヘッダファイルで提供されている reverse() 関数を呼び出します。
反転後のフォワードリストを表示します。
サンプルコード
// forward_list::reverse() の動作を示すC++コード
#include <iostream>
#include <forward_list>
using namespace std;
int main() {
// フォワードリストの初期化
forward_list<int> flist = {10, 20, 30, 40, 50};
cout << "要素のリスト : ";
for (auto it = flist.begin(); it != flist.end(); ++it)
cout << *it << " ";
// リストを反転する関数の呼び出し
flist.reverse();
cout << "\n反転後のリスト : ";
for (auto it = flist.begin(); it != flist.end(); ++it)
cout << *it << " ";
return 0;
}
出力結果
上記のコードを実行すると、以下のような出力が得られます。
要素のリスト : 10 20 30 40 50 反転後のリスト : 50 40 30 20 10
-
C++ STLのlist::reverse()関数の使い方と実例解説
本記事では、C++におけるlist::reverse()関数の動作、構文、具体的な使用例について詳しく解説します。STLにおけるlistとはlistは、シーケンス内の任意の位置で定数時間O(1)での要素の挿入・削除を可能にするデータ構造です。listは双方向連結リストとして実装されており、メモリの非連続的な割り当てが可能です。配列、vector、dequeと比較すると、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。listはforward_listと似ていますが、forwar
-
C++ STLのforward_list assign()関数の使い方を徹底解説
本記事では、C++におけるforward_listのassign()関数の動作について詳しく解説します。forward_listとはforward_listは、通常のリスト(std::list)と異なり、次の要素とのリンクのみを保持するコンテナです。通常のリストは前後両方向の要素とリンクしているため、前方・後方のどちらの方向にも反復処理が可能ですが、forward_listは前方方向にしか反復できません。その代わり、メモリ使用量が少なく、軽量な動作が特徴です。assign()関数とはforward_list::assign()関数は、C++標準テンプレートライブラリ(STL)の一部です。この関