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

C++のstd::listをマスターする:構文、関数、実践例

std::listとは

C++において、std::listは要素を双方向連結リストとして格納するシーケンスコンテナです。この構造により、任意の位置への要素の挿入や削除を定数時間で実行でき、リストを前後両方向に反復処理できます。std::vectorのような高速なランダムアクセスは提供しませんが、頻繁な挿入や削除が発生するシナリオで優れた性能を発揮します。

コンテナはアロケータを通じてメモリを自動的に管理するため、実行時に両端から動的に拡張・縮小が可能です。

なぜstd::listを使うのか

リストの定義

std::listを使用するには、<list>ヘッダーをインクルードします:

#include <list> // テンプレート定義
// template<class T, class Alloc = std::allocator<T>> class list;

パラメータ:

例1:基本的な反復処理

#include <iostream>
#include <list>
int main() {
    std::list<int> my_list{12, 5, 10, 9};
    for (int x : my_list) {
        std::cout << x << '\n';
    }
}

出力:

C++のstd::listをマスターする:構文、関数、実践例

よく使うstd::list操作

関数説明
insert()イテレータ位置の前に要素を挿入
push_back()末尾に要素を追加
push_front()先頭に要素を追加
pop_front()最初の要素を削除
size()要素数を取得
front()最初の要素にアクセス
back()最後の要素にアクセス
reverse()要素の順序を反転
merge()2つのソート済みリストをマージ

コンストラクタ

例2:コンストラクタのバリエーション

#include <iostream>
#include <list>
int main() {
    std::list<int> l; // 空
    std::list<int> l1{10, 20, 30};
    std::list<int> l2(l1.begin(), l1.end()); // 範囲コピー
    std::list<int> l3(std::move(l1)); // ムーブ
    std::cout << "Size of l: " << l.size() << '\n';
    std::cout << "Contents of l2:\n";
    for (int x : l2) std::cout << x << '\n';
    std::cout << "Contents of l3:\n";
    for (int x : l3) std::cout << x << '\n';
}

出力:

C++のstd::listをマスターする:構文、関数、実践例

コンテナの特性

要素の挿入

push_front、push_back、insertを使用してアイテムを追加します。

例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); // 10の前
    }
    for (int x : my_list) std::cout << x << '\n';
}

出力:

C++のstd::listをマスターする:構文、関数、実践例

要素の削除

単一要素や範囲の削除にはeraseを使用します。

例4:削除のデモンストレーション

#include <iostream>
#include <list>
int main() {
    std::list<int> my_list{12, 5, 10, 9};
    std::cout << "Before deletion:\n";
    for (int x : my_list) std::cout << x << '\n';
    my_list.erase(my_list.begin()); // 最初を削除
    std::cout << "After deletion:\n";
    for (int x : my_list) std::cout << x << '\n';
}

出力:

C++のstd::listをマスターする:構文、関数、実践例

重要なポイント

C言語

  1. C++演算子を徹底解説:種類、例、サンプルプログラム付き
  2. C++ do-while文:構文、実践例、ネストしたループ
  3. C++ switch文をマスター:構文、使い方、実践例
  4. C++動的配列の確保をマスター:コード例付き実践ガイド
  5. C++ポインタをマスター:概念、例、実践的応用
  6. C++演算子オーバーロード:コード例付き実践ガイド
  7. C++構造体を実例で徹底解説
  8. C++関数を実例で徹底解説:基本から応用まで
  9. C++ structとclassの違い:構文、特徴、使い分けのベストプラクティス
  10. Python collections.Counter:効率的なカウント、更新、演算操作
  11. Python list.count() 完全ガイド:実践例付きで徹底解説