次の方法で共有


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

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

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

リストは配列に似ていますが、格納方法は非常に異なります。 リスト内の各要素には、前の要素と次の要素へのポインターも含まれており、二重にリンクされたリストになります。 項目を追加または削除するのは非常に高速です。これは、いくつかのポインターの変更のみを伴うためです。 ただし、リストの検索は、すべての検索がリストのいずれかの端から開始する必要があるため、コストが高くなる可能性があります。

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

こちらも参照ください

クラスの概要