logo

C++ 標準テンプレート ライブラリ (STL) のリスト

リストは順序です コンテナ これにより、不連続なメモリ割り当てが可能になります。ベクトルと比較すると、リストの走査は遅いですが、一度位置が見つかると、挿入と削除は迅速に (一定時間) 行われます。通常、リストというときは、 二重リンクリスト 。単一リンクリストを実装するには、 forward_list

std::リスト リストコンテナのクラスです。これは C++ 標準テンプレート ライブラリ (STL) の一部であり、内部で定義されています。 ヘッダファイル。



構文:

トーチの取り付け
std::list name_of_list;>

例:

C++








// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};>> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }>

クイックソート
>

>

出力

Java文字列cmp
12 45 8 6>

上の例では、という名前の std::list オブジェクトを作成しました。 gqリスト そしてinitializer_listを使用して初期化しました。前述したさまざまな方法を使用して std::list オブジェクトを初期化できます。 ここ。

std::list の基本操作

  • フロント() リストの最初の要素の値を返します。
  • 戻る() リストの最後の要素の値を返します。
  • プッシュ_フロント() リストの先頭に新しい要素「g」を追加します。
  • プッシュバック() リストの最後に新しい要素「g」を追加します。
  • ポップフロント() リストの最初の要素を削除し、リストのサイズを 1 減らします。
  • ポップバック() リストの最後の要素を削除し、リストのサイズを 1 減らします。
  • 入れる() リスト内の指定された位置の要素の前に新しい要素を挿入します。
  • サイズ() リスト内の要素の数を返します。
  • 始める() begin() 関数は、リストの最初の要素を指す反復子を返します。
  • 終わり() end() 関数は、最後の要素に続く理論上の最後の要素を指す反復子を返します。

以下の例は、C++ でのリスト コンテナーとその基本関数の一般的な使用法を示しています。

例:

C++

Javaのif else文




// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::それを反復処理します;>>' for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>' '>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1、gqlist2;>>' for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>' List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>' List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>' gqlist1.front() : '> << gqlist1.front();> >cout <<>' gqlist1.back() : '> << gqlist1.back();> >cout <<>' gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>' gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>' gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>' gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }>

>

>

Javaは文字列を追加します
出力

List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>

上記の例は、std::list とそのメンバー関数の一般的な使用法のみを示しています。以下の表に、std::list クラスのすべてのメンバー関数とその詳細な説明へのリンクを示します。

std::list メンバー関数

機能

意味

フロント() リストの最初の要素の値を返します。
戻る() リストの最後の要素の値を返します。
プッシュフロント(g) リストの先頭に新しい要素「g」を追加します。
プッシュバック(g) リストの最後に新しい要素「g」を追加します。
ポップフロント() リストの最初の要素を削除し、リストのサイズを 1 減らします。
ポップバック() リストの最後の要素を削除し、リストのサイズを 1 減らします。
リスト::begin() begin() 関数は、リストの最初の要素を指す反復子を返します。
リスト::end() end() 関数は、最後の要素に続く理論上の最後の要素を指す反復子を返します。
rbegin() と rend() をリストします。 rbegin() は、リストの最後の要素を指す逆反復子を返します。 rend() は、リストの先頭より前の位置を指す逆反復子を返します。
cbegin() と cend() をリストします。 cbegin() は、リストの先頭を指す定数ランダム アクセス反復子を返します。 cend() は、リストの末尾を指す定数のランダム アクセス反復子を返します。
crbegin() と crend() をリストします。 crbegin() は、リストの最後の要素、つまりコンテナの逆の先頭を指す定数逆反復子を返します。 crend() は、リストの最初の要素に先行する理論上の要素、つまりリストの逆端を指す定数逆反復子を返します。
空の() リストが空(1)であるか空でない(0)かを返します。
入れる() リスト内の指定された位置の要素の前に新しい要素を挿入します。
消去() リストから単一の要素または要素の範囲を削除します。
割当() 現在の要素を置換し、リストのサイズを変更することにより、リストに新しい要素を割り当てます。
取り除く() 指定された要素と等しいすべての要素をリストから削除します。
list::remove_if() 関数のパラメーターとして指定された述語または条件に true に対応するすべての値をリストから削除するために使用されます。
逆行する() リストを反転します。
サイズ() リスト内の要素の数を返します。
リストのサイズ変更() リストコンテナのサイズを変更するために使用されます。
選別() リストを昇順に並べ替えます。
リストの最大サイズ() リスト コンテナーが保持できる要素の最大数を返します。
ユニークなリスト() 重複する連続要素をすべてリストから削除します。
list::emplace_front() および list::emplace_back() .emplace_front() 関数は、リスト コンテナーに新しい要素を挿入し、リストの先頭にオブジェクトをインプレースで構築するために使用されます。
。 emplace_back() 関数は、リスト コンテナに新しい要素を挿入するために使用され、リストの最後にオブジェクトをインプレースで構築します。
リスト::クリア() clear() 関数は、リスト コンテナーのすべての要素を削除するために使用され、サイズ 0 になります。
リスト::演算子= この演算子は、既存のコンテンツを置き換えることによって、新しいコンテンツをコンテナに割り当てるために使用されます。
リスト::スワップ() この関数は、あるリストの内容を別のリストと交換するために使用されます。
リストスプライス() あるリストから別のリストに要素を転送するために使用されます。
リストマージ() 2 つのソートされたリストを 1 つにマージします。
リスト emplace() 指定された位置に新しい要素を挿入してリストを拡張し、リストの先頭にインプレースでオブジェクトを構築します。コピー操作を回避することでパフォーマンスが向上する可能性があります。

リストコンテナの注意点

  • これは通常、両方向の走査を行う動的二重リンク リストを使用して実装されます。
  • 配列やベクトルと比較して、挿入および削除操作が高速になります。
  • 順次アクセスのみを提供します。中間要素へのランダムアクセスは不可能
  • テンプレートとして定義されているため、あらゆるデータ型を保持できます。
  • これは、ソートされていないリストと同じように動作します。これは、デフォルトではリストの順序が保持されないことを意味します。ただし、並べ替えにはテクニックがあります。