配列、リスト、マップ クラス

データの集計を処理するために、クラス ライブラリには、さまざまなオブジェクトと定義済みの型を保持できるコレクション クラス (配列、リスト、マップ) のグループが用意されています。 コレクションのサイズは動的に設定されます。 これらのクラスは、Windows に記述されているかどうかにかかわらず、どのプログラムでも使用できます。 ただし、アプリケーショ ンフレームワークでドキュメント クラスを定義するデータ構造を実装する場合に最も役立ちます。 これらのクラスから特別なコレクション クラスを簡単に派生させることも、テンプレート クラスに基づいて作成することもできます。 これらの方法の詳細については、「コレクション」を参照してください。 テンプレート コレクション クラスの一覧については、「配列、リスト、およびマップのテンプレート クラス」を参照してください。

配列は、メモリ内に連続して格納される 1 次元のデータ構造体です。 要素のインデックスを要素のサイズで乗算し、その結果を配列のベース アドレスに追加することによって、特定の要素のメモリ アドレスを計算できるため、非常に高速なランダム アクセスが可能になります。 ただし、配列に要素を挿入する必要がある場合は、非常にコストがかかります。これは、要素を挿入するための領域を確保するために、要素を超えて配列全体を移動する必要があるためです。 配列は、必要に応じて拡大したり縮小したりすることができます。

リストは配列に似ていますが、格納される方法が大きく異なります。 リスト内の各要素には、前後の要素へのポインターも含まれており、これがダブル リンク リストになります。 項目を追加または削除するには、いくつかのポインターを変更するだけなので非常に高速です。 ただし、一覧の検索は、すべての検索がリストの最後から開始する必要があるため、コストが高くなる可能性があります。

マップは、キー値をデータ値に関連付けます。 たとえば、マップのキーは文字列で、データはリストのポインターになります。 特定の文字列に関連付けられているポインターを提供するようにマップに要求します。 マップでは、キーの参照にハッシュ テーブルが使用されるため、マップの参照が高速になります。 項目の追加と削除も高速です。 マップは、多くの場合、補助インデックスとして他のデータ構造と共に使用されます。 MFC では、メッセージ マップと呼ばれる特殊な種類のマップを使用して、Windows メッセージをそのメッセージのハンドラー関数へのポインターにマップします。

関連項目

クラスの概要