工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++ の std::list と例

std::list とは?

C++ では、std::list はストレージ コンテナーを参照します。 std:list を使用すると、どこからでもアイテムを挿入および削除できます。 std::list は、二重リンク リストとして実装されます。これは、リスト データに双方向かつシーケンシャルにアクセスできることを意味します。

標準テンプレート ライブラリ リストは高速ランダム アクセスをサポートしていませんが、すべての方向からのシーケンシャル アクセスをサポートしています。

リスト要素を異なるメモリ チャンクに分散させることができます。データへのシーケンシャル アクセスに必要な情報は、コンテナーに格納されます。 std::list は、実行時に必要に応じて両端から拡大および縮小できます。内部アロケーターは、ストレージ要件を自動的に満たします。

この C++ チュートリアルでは、次のことを学びます:

std::list を使用する理由

ここに std::List を使用する理由があります:

リストの構文

std::list を定義するには、 ヘッダー ファイルをインポートする必要があります。 std::list 定義の構文は次のとおりです:

template < class Type, class Alloc =allocator<T> > class list;

上記のパラメータの説明は次のとおりです:

例 1:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };

	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

出力:

コードのスクリーンショットは次のとおりです:

コードの説明:

<オール>
  • アルゴリズム ヘッダー ファイルをインクルードして、その関数を使用します。
  • iostream ヘッダー ファイルをインクルードして、その関数を使用します。
  • リスト ヘッダー ファイルをインクルードして、その機能を使用します。
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • 4 つの整数のセットで my_list という名前のリストを作成します。
  • for ループを使用して、ループ変数 x を作成します。この変数は、リスト要素を反復処理するために使用されます。
  • リストの値をコンソールに出力します。
  • for a ループの本体の終了
  • main() 関数の本体の終わり。
  • C++ リスト関数

    一般的な std::list 関数は次のとおりです:

    機能 説明 insert() この関数は、反復子が指す位置の前に新しい項目を挿入します。push_back() この関数は、リストの末尾に新しい項目を追加します。push_front() リストの前面に新しい項目を追加します。pop_front() リストの項目を削除しますfirst item.size()この関数は、リスト要素の数を決定します。front()リストの最初の項目を決定します。back()リストの最後の項目を決定します。reverse()リスト項目を逆にします。merge()2つをマージしますソートされたリスト。

    コンストラクター

    ヘッダー ファイルによって提供される関数のリストは次のとおりです。

    例 2:

    #include <iostream>
    #include <list>
    using namespace std;
    int main(void) {
    	list<int> l;
    	list<int> l1 = { 10, 20, 30 };
    	list<int> l2(l1.begin(), l1.end());
    	list<int> l3(move(l1));  
    	cout << "Size of list l: " << l.size() << endl;
    	cout << "List l2 contents: " << endl;
    	for (auto it = l2.begin(); it != l2.end(); ++it)
    	      cout << *it << endl;
    	cout << "List l3 contents: " << endl;
    	for (auto it = l3.begin(); it != l3.end(); ++it)
    		cout << *it << endl;
    	return 0;
    }
    

    出力:

    コードのスクリーンショットは次のとおりです:

    コードの説明:

    <オール>
  • iostream ヘッダー ファイルをインクルードして、その関数を使用します。
  • リスト ヘッダー ファイルをインクルードして、その機能を使用します。
  • コードに std 名前空間を含めて、クラスを呼び出さずにそのクラスを使用します。
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • l という名前の空のリストを作成します。
  • 3 つの整数のセットで l1 という名前のリストを作成します。
  • l1 という名前のリスト内のすべての要素を最初から最後まで含む l2 という名前のリストを作成します。
  • 移動セマンティクスを使用して、l3 という名前のリストを作成します。リスト l3 はリスト l2 と同じ内容になります。
  • l という名前のリストのサイズを他のテキストと一緒にコンソールに出力します。
  • コンソールにテキストを出力します。
  • it という名前の反復子を作成し、それを使用して l2 という名前のリストの要素を反復処理します。
  • l2 という名前のリストの要素をコンソールに出力します。
  • コンソールにテキストを出力します。
  • it という名前の反復子を作成し、それを使用して l3 という名前のリストの要素を反復処理します。
  • l3 という名前のリストの要素をコンソールに出力します。
  • プログラムは、正常終了時に値を返さなければなりません。
  • main() 関数の本体の終わり。
  • コンテナ プロパティ

    コンテナ プロパティのリストは次のとおりです:

    プロパティ 説明 SequenceSequence コンテナは、要素を厳密な線形順序で並べます。要素は、シーケンス内の位置によってアクセスされます。二重にリンクされたリストすべての要素には、前の要素と次の要素を見つける方法に関する情報があります。これにより、挿入操作と削除操作に一定の時間を確保できます。アロケーター対応アロケーター オブジェクトは、ストレージ サイズを動的に変更するために使用されます。

    リストへの挿入

    リストに値を挿入するために使用できるさまざまな関数があります。これを実演してみましょう:

    例 3:

    #include <algorithm>
    #include <iostream>
    #include <list>
    int main() {
    	std::list<int> my_list = { 12, 5, 10, 9 };
    	my_list.push_front(11);
    	my_list.push_back(18);
    	auto it = std::find(my_list.begin(), my_list.end(), 10);
    	if (it != my_list.end()) {
    		my_list.insert(it, 21);
    	}
    	for (int x : my_list) {
    		std::cout << x << '\n';
    	}
    }
    

    出力:

    コードのスクリーンショットは次のとおりです:

    コードの説明:

    <オール>
  • アルゴリズム ヘッダー ファイルをインクルードして、その関数を使用します。
  • iostream ヘッダー ファイルをインクルードして、その関数を使用します。
  • リスト ヘッダー ファイルをインクルードして、その機能を使用します。
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • 4 つの整数のセットで my_list という名前のリストを作成します。
  • my_list という名前のリストの先頭に要素 11 を挿入します。
  • my_list という名前のリストの末尾に要素 18 を挿入します。
  • イテレータを作成し、それを使用してリスト my_list から要素 10 を見つけます。
  • if ステートメントを使用して、上記の要素が見つかったかどうかを判断します。
  • 見つかった場合は、上記の要素の前に要素 21 を挿入します。
  • if ステートメントの本文の終わり。
  • for ループを使用して、ループ変数 x を作成します。この変数は、リスト要素を反復処理するために使用されます。
  • リストの値をコンソールに出力します。
  • for a ループの本体の終わり。
  • main() 関数の本体の終わり。
  • リストからの削除

    リストから項目を削除することができます。 erase() 関数を使用すると、リストからアイテムまたはアイテムの範囲を削除できます。

    例 4:

    #include <algorithm>
    #include <iostream>
    #include <list>
    using namespace std;
    int main() {
    	std::list<int> my_list = { 12, 5, 10, 9 };
    	cout << "List elements before deletion: ";
    	for (int x : my_list) {
    		std::cout << x << '\n';
    	}
    	list<int>::iterator i = my_list.begin();
    	my_list.erase(i);
    	cout << "\nList elements after deletion: ";
    	for (int x : my_list) {
    		std::cout << x << '\n';
    	}
    	return 0;
    }
    

    出力:

    コードのスクリーンショットは次のとおりです:

    コードの説明:

    <オール>
  • アルゴリズム ヘッダー ファイルをインクルードして、その関数を使用します。
  • iostream ヘッダー ファイルをインクルードして、その関数を使用します。
  • リスト ヘッダー ファイルをインクルードして、その機能を使用します。
  • std 名前空間をプログラムに含めて、そのクラスを呼び出さずに使用できるようにします。
  • main() 関数を呼び出します。プログラム ロジックは、この関数の本体内に追加する必要があります。
  • 4 つの整数のセットで my_list という名前のリストを作成します。
  • コンソールにテキストを出力します。
  • for ループを使用して、ループ変数 x を作成します。この変数は、リスト要素を反復処理するために使用されます。
  • リストの値をコンソールに出力します。
  • for ループの本体の終わり。
  • リストの最初の要素を指す反復子 i を作成します。
  • 反復子 i が指す erase() 関数を使用します。
  • コンソールにテキストを出力します。
  • for ループを使用して、ループ変数 x を作成します。この変数は、リスト要素を反復処理するために使用されます。
  • リストの値をコンソールに出力します。これは削除後に発生します。
  • for ループの本体の終わり。
  • プログラムは、正常終了時に値を返さなければなりません。
  • main() 関数の本体の終わり。
  • まとめ:


    C言語

    1. C++ の演算子と例:型とプログラムとは
    2. C++ do…while ループと例
    3. C++ Switch Case ステートメントと EXAMPLE
    4. 例による配列の C++ 動的割り当て
    5. C++ ポインタと例
    6. C++ 演算子のオーバーロードと例
    7. C++ 構造体と例
    8. C++ 関数とプログラム例
    9. 構造体とクラスの違い:C++ の例で説明
    10. 例を使用したコレクション内の Python カウンター
    11. 例を使用した Python List count()