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

C ++(4.5)のリスト


リストは、データを順番に格納し、要素に非連続メモリを割り当てるコンテナのタイプです。 C ++では、リストは二重にリンクされたリストと見なされ、要素の挿入と削除を両端から実行できるため、リストを両端からトラバースすることもできます。単一リンクリストを使用するために、C++STLで利用可能な転送リストを使用します。

ベクトルよりもリストを使用する利点はそれです

イテレータが正しい要素に配置されている場合、リストはリストコンテナで使用可能な要素の挿入と削除が高速になります。

リストを使用するデメリットはそれです

リストでは、コンテナで使用可能な要素をその位置から直接フェッチすることは困難です。たとえば、4番目の要素をフェッチする場合、4番目の要素に直接ジャンプすることは困難であり、代わりにイテレータは開始位置または終了位置からそこに到達する必要があります。

リストに関連付けられている機能は

  • Push_front(element) -この関数は、リストの先頭に要素を挿入するために使用されます。

    構文 -listName.push_front(datatype element)

    パラメータ -挿入する値として1つのパラメーターを取ります。

    戻り値 -戻り値なし。

  • Push_back(element) -この関数は、リストの最後に要素を挿入するために使用されます。

    構文 --listName.push_back(datatype element)

    パラメータ -挿入する値として1つのパラメーターを取ります。

    戻り値 -戻り値なし。

  • Insert() -この関数は、リストコンテナの指定された位置に要素を挿入するために使用されます。

    構文 -:listName.insert(position、total、element)

    パラメータ -3つのパラメータが必要です-

    • 要素を挿入する必要がある位置

    • 合計、挿入する要素の総数を指定します

    • Elementは、挿入する要素を指定します。

  • 戻り値 -新しく挿入された要素の先頭を指すイテレータを返します。

  • Pop_front() -この関数は、リストの先頭から要素を削除するために使用されます。

    構文 --listName.pop_front()

    パラメータ -パラメータなし

    戻り値 -戻り値なし

  • Front() -この関数は、リストの最初の要素をフェッチするために使用されます。

    構文 --listName.front()

    パラメータ -パラメータなし

    戻り値 -この関数は、最初の要素への直接参照を返します

  • Pop_back() -この関数は、リストの最後から要素を削除するために使用されます。

    構文 --listName.pop_back()

    パラメータ -パラメータなし

    戻り値 -戻り値なし

  • back() -この関数は、リストの最後の要素をフェッチするために使用されます。

    構文 --listName.back()

    パラメータ -パラメータなし

    戻り値 -この関数は、最後の要素への直接参照を返します

  • size() -この関数は、リスト内の要素の総数を取得するために使用されます。

    構文 --listName.size()

    パラメータ -パラメータなし

    戻り値 -この関数は、リスト内の要素の総数を返します。

  • サイズ変更() -この関数は、リスト内の要素の総数のサイズを変更するために使用されます。

    構文 --listName.resize(int resized_number、value(optional))

    パラメータ -2つのパラメータが必要です

    • resized_number -コンテナのサイズを拡大または縮小する正確な数

    • 値(オプション) -これは、要素の最後に指定された値を追加するオプションのパラメーターです。

  • 戻り値 -:戻り値なし。

  • Max_size() -この関数は、リストが持つことができる要素の最大数をフェッチするために使用されます。

    構文 --listName.max_size()

    パラメータ -パラメータなし

    戻り値 -この関数は、リストが持つことができる要素の最大数を返します。

  • Clear() -この関数は、リストからすべての要素を削除し、そのサイズを0にリセットするために使用されます。

    構文 --listName.max_size()

    パラメータ -パラメータなし

    戻り値 -戻り値なし。

  • remove(element) -この関数は、パラメータで渡された要素と一致するすべての要素を削除するために使用されます。

    構文 --listName.remove(element)

    パラメータ -リストコンテナから削除する要素を指定する単一のパラメータを取ります。

    戻り値 -戻り値なし。

  • Remove_if(関数ポインタ/関数オブジェクト) -この関数は、パラメータで渡された条件に基づいて、パラメータで渡された要素と一致するすべての要素を削除するために使用されます。

    構文 --listName.remove_if(関数ポインタ/関数オブジェクト)

    パラメータ -関数ポインタまたは関数オブジェクトとして単一のパラメータを取ります。

    戻り値 -すべての要素が削除されるとtrueを返します。

  • Erase() -この関数は、渡されたパラメータに応じて、単一の要素と複数の要素を消去するために使用されます

    構文 -:イテレータlistName.erase(イテレータ位置)イテレータlistName.erase(イテレータFirst_ele、イテレータLast_ele)

    パラメータ -最初の構文では、要素がリストコンテナから削除される位置を指定するパラメータpositionを取ります。 2番目の構文では、要素が削除される範囲を指定するパラメーターの最初の要素と最後の要素を取ります

    戻り値 -最後に削除された要素を指すイテレータを返します。

  • Empty() -この関数は、リストが空かどうかを確認するために使用されます。

    構文 --listName.empty()

    パラメータ -パラメータなし

    戻り値 -

    • trueを返す-リストが空の場合

    • falseを返します-リストが空でない場合。

  • Begin() -この関数は、リストの最初の要素を指すイテレータを返します。

    構文 --listName.begin()

    パラメータ -パラメータなし

    戻り値 -リストの最初の要素を指すイテレータを返します。

  • End() -この関数は、リストの最後の要素を指すイテレータを返します。

    構文 --listName.end()

    パラメータ -パラメータなし

    戻り値 -リスト内の終了要素を指すイテレータを返します。
    rbegin() -この関数は、リストの最後の要素を指す逆イテレータを返します。
    構文 --listName.rbegin()
    パラメータ -パラメータなし
    戻り値 -リスト内の最後の要素を指す逆イテレータを返します。

  • rend() -この関数は、リストの最初の要素を指す逆イテレータを返します。

    構文 --listName.rend()

    パラメータ -パラメータなし

    戻り値 -リストの最初の要素を指す逆イテレータを返します。

  • Cbegin() -この関数は、リストの先頭を指す一定のランダムアクセスイテレータを返すために使用されます。

    構文 --listName.cbegin()

    パラメータ -パラメータなし

    戻り値 -リストの先頭を指す一定のランダムアクセスイテレータを返します。

  • Cend() ---この関数は、リストの最後を指す一定のランダムアクセスイテレータを返すために使用されます。

    構文 --listName.cend()

    パラメータ -パラメータなし

    戻り値 -リストの最後を指す一定のランダムアクセスイテレータを返します。

  • Crbegin() -この関数は、リストの最後を指す一定のランダムアクセス逆イテレータを返すために使用されます。

    構文 --listName.crbegin()

    パラメータ -パラメータなし

    戻り値 -リストの最後を指す一定のランダムアクセス逆イテレータを返します。

  • Crend() -この関数は、リストの先頭を指す一定のランダムアクセス逆イテレータを返すために使用されます。

    構文 --listName.crend()

    パラメータ -パラメータなし

    戻り値 -リストの先頭を指す一定のランダムアクセス逆イテレータを返します。

  • reverse() -この関数は、リストコンテナ内のすべての要素を逆に使用します。

    構文 --listName.reverse()

    パラメータ -パラメータなし

    戻り値 -戻り値なし

  • unique() -この関数は、重複する連続する要素をすべてリストから削除するために使用されます。

    構文 --listName.unique(2つの値が同じであると見なす述語)

    パラメータ -2つの要素を同じと見なす必要がある場合にtrueを返すオプションのパラメーターを取ります。

    戻り値 -戻り値なし

  • emplace() -この関数は、指定された位置に新しい要素を挿入するために使用されます。

    構文 --listName.emplace(position、value)

    パラメータ -2つのパラメータを取ります。1つは要素を挿入する必要のある位置を指定し、もう1つは挿入する必要のある要素の値を指定します。

    戻り値 -新しく挿入された要素を指すイテレータを返します。

  • Emplace_front() -この関数は、リストの先頭に新しい要素を挿入するために使用されます。

    構文 --listName.emplace_front(element)

    パラメータ -挿入する値を指定する1つのパラメーターを取ります

    戻り値 -戻り値はありません。

  • Emplace_back() -この関数は、リストの最後に新しい要素を挿入するために使用されます。

    構文 --listName.emplace_back(element)

    パラメータ -挿入する値を指定する1つのパラメーターを取ります

    戻り値 -戻り値はありません。

  • オペレーター(=) -この演算子は、あるリストのコンテンツを別のリストに置き換えるために使用されます。

    構文 --listName_1 =listName_2

    パラメータ -パラメータなし

    戻り値 -戻り値はありません。

  • Swap() -この関数は、あるリストのコンテンツを同じタイプの別のリストと交換するために使用されます

    構文 --listName_1.swap(listName_2)

    パラメータ -パラメータなし

    戻り値 -戻り値はありません。

  • Merge() -この関数は、要素を2つのリストにマージするために使用されます。

    構文 --listName_1.merge(listName_2)

    パラメータ -パラメータなし

    戻り値 -戻り値はありません。


  1. C++でのリンクリストのフラット化

    この問題では、右と下の2つのポインタノードで構成されるリンクリストが表示されます。 右ノード はメインのリンクリストポインタです。 ダウンノード そのノードで始まるセカンダリリンクリスト用です。 リンクリストはすべて並べ替えられています。 私たちのタスクは、リンクリストをフラット化するプログラムを作成することであり、結果のリスト自体がソートされたリストになります。 問題を理解するために例を見てみましょう 入力 出力 1-> 9-> 8 -> 4 -> 6-> 7-> 2-> 3-> 5 ソリューションアプロー

  2. C++でのストランドソート

    このセクションでは、C++の標準ライブラリを使用して配列またはリンクリストを並べ替える方法を説明します。 C ++には、さまざまな目的に使用できる複数の異なるライブラリがあります。並べ替えもその1つです。 C++関数std::list ::sort()は、リストの要素を昇順で並べ替えます。等しい要素の順序は保持されます。比較のために演算子<を使用します。 例 #include <iostream> #include <list> using namespace std; int main(void) {    list<int> l =