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

C++ STLのlist::reverse()関数の使い方と実例解説

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

STLにおけるlistとは

listは、シーケンス内の任意の位置で定数時間O(1)での要素の挿入・削除を可能にするデータ構造です。listは双方向連結リストとして実装されており、メモリの非連続的な割り当てが可能です。配列、vector、dequeと比較すると、コンテナ内の任意の位置への要素の挿入・抽出・移動において優れたパフォーマンスを発揮します。一方で、要素への直接アクセス(ランダムアクセス)は遅いという特徴があります。listはforward_listと似ていますが、forward_listは単方向連結リストであり、前方方向にのみイテレーションできる点が異なります。

list::reverse()とは

list::reverse()は、C++ STLに組み込まれた関数で、<list>ヘッダーファイルで宣言されています。reverse()はlistコンテナの要素を逆順に並べ替えるために使用されます。つまり、リストの最後の要素が最初の要素になり、最初の要素が最後の要素になります。

以下は、リストとその逆順の状態を図で表したものです。

C++ STLのlist::reverse()関数の使い方と実例解説

構文

リスト名.reverse();

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

戻り値

この関数は戻り値を返しません。呼び出されたリストコンテナを逆順に並べ替えるだけです。

使用例

#include <bits/stdc++.h>
using namespace std;
int main(){
    // リストを作成
    list<int> myList;
    // リストに要素を挿入
    myList.push_back(1);
    myList.push_back(2);
    myList.push_back(3);
    myList.push_back(4);
    // reverse()関数を適用する前のリストを表示
    cout<<"List : ";
    for (auto i = myList.begin(); i != myList.end(); i++)
        cout << *i << " ";
    // リストを逆順にする
    myList.reverse();
    cout<<"\nList after applying reverse() : ";
    for (auto i = myList.begin(); i != myList.end(); i++)
        cout << *i << " ";
    return 0;
}

出力

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

List : 1 2 3 4
List after applying reverse(): 4 3 2 1

このように、reverse()関数を呼び出すだけで、リスト内の要素の順序が簡単に反転されることが確認できます。要素を一つずつ移動させる必要がなく、効率的にリストを逆順にできる便利な関数です。

  1. C++ STLのlist::assign()関数の使い方をわかりやすく解説

    本記事では、C++におけるassign()関数の動作について詳しく解説します。 list::assign()関数はC++標準テンプレートライブラリ(STL)の一部であり、リストに新しい値を代入したり、あるリストから別のリストへ値をコピーしたりするために使用されます。 この関数を呼び出すには、<list>ヘッダーファイルをインクルードする必要があります。 構文①:サイズと値を指定して代入する リストに新しい値を代入する場合の構文は以下の通りです。 List_Name.assign(size, value) 構文②:別のリストから値をコピーする あるリストから別のリストへ値をコピー

  2. C++STLのlist back()関数の使い方を解説

    C++のlist back()関数とは本記事では、C++におけるlist back()関数の動作について詳しく解説します。list::back()関数は、C++標準テンプレートライブラリ(STL)の一部であり、リストの最後(末尾)の要素を取得・表示するために使用されます。この関数を呼び出す前に、必ず<list>ヘッダーファイルをインクルードする必要がある点に注意してください。構文List_Name.back();パラメータこの関数は、いかなるパラメータも受け取りません。戻り値この関数は、リストの最後の要素の値を返します。なお、リストが空の場合の動作は未定義となるため、呼び出し前にリ