次の方法で共有


コレクション クラス

MFC のコレクション クラスでは、オブジェクトのグループを管理できます。 次の 2 種類のコレクション クラスがあります。

  • C++ テンプレートから作成したコレクション クラス

  • テンプレートで作成されていないコレクション クラス

注意

非テンプレート コレクション クラスを既に使用しているコードでは、引き続きそのクラスを使用できます。 独自のデータ型のためにタイプ セーフな (型が保証された) コレクション クラスを新規作成する場合は、テンプレート ベースのクラスの使用をお勧めします。

コレクション クラスの形状

コレクション クラスは、その "形状" と要素の型で識別されます。 この "形状" とは、コレクションにオブジェクト編成し、保存する形態のことです。 MFC 3 つの基本的なコレクション図形を提供します。リスト、配列、およびマップ (ディクショナリとも呼ばれます)。 自分のプログラムの内容に最も合ったコレクション形状を選択できます。

コレクション クラスの 3 種類の形状のそれぞれについては、このトピックで簡単に後述します。 機能を比較してプログラムに最も適した形状を決定するには、「コレクション クラスの選択に関する推奨事項」を参照してください。

  • [リスト]

    リスト クラスは、要素を順番に並べたインデックスのないリストであり、双方向のリンク リストとして実装されます。 リストには "先頭" と "末尾" があり、リストの先頭または末尾の要素の追加や削除、または中間の要素の挿入と削除を高速で行うことができます。

  • 配列

    配列クラスは、オブジェクトを順番に並べた、整数インデックス付きの配列です。サイズを動的に変更できます。

  • マップ (ディクショナリとも呼ばれます)

    マップは、キー オブジェクトと値オブジェクトを対応付けるコレクションです。

テンプレート ベースのコレクション クラス

任意の型のオブジェクトを含むタイプ セーフなコレクションを実装する最も簡単な方法は、MFC のテンプレート ベースのクラスを使用することです。 テンプレート ベースのクラスの例については、MFC のサンプル プログラム「サンプルを収集します。MFC コレクション クラスを示します」を参照してください。

次の表は、MFC のテンプレート ベースのコレクション クラスの一覧です。

コレクション テンプレート クラス

コレクションの内容

配列

リスト

マップ

任意の型のオブジェクトのコレクション

CArray

CList

CMap

任意の型のオブジェクトを指すポインターのコレクション

CTypedPtrArray

CTypedPtrList

CTypedPtrMap

テンプレート ベースでないコレクション クラス

アプリケーションで MFC 非テンプレート クラスを既に使用している場合は、引き続きそのクラスを使用できます。 ただし、新しいコレクションに対しては、テンプレート ベースのクラスを使用することをお勧めします。 次の表は、テンプレート ベースでない MFC のコレクション クラスの一覧です。

非テンプレート コレクション クラス

配列

リスト

マップ

CObArray

CObList

CMapPtrToWord

CByteArray

CPtrList

CMapPtrToPtr

CDWordArray

CStringList

CMapStringToOb

CPtrArray

 

CMapStringToPtr

CStringArray

 

CMapStringToString

CWordArray

 

CMapWordToOb

CUIntArray

 

CMapWordToPtr

コレクション クラスの選択に関する推奨事項」の表「MFC コレクション クラスの特徴」では、MFC コレクション クラスについて形状以外の次の特徴が示されています。

  • クラスで C++ テンプレートを使用しているか

  • コレクションに格納されている要素をシリアル化できるか

  • コレクションに格納されている要素を診断用にダンプできるか

  • タイプ セーフなコレクションか

目的に合ったトピックをクリックしてください

汎用コレクション クラスの操作方法

テンプレート ベースのコレクション クラスの操作方法

コレクションのメンバーへのアクセス (テンプレート ベース/非テンプレート)

参照

概念

MFC の一般的なトピック

その他の技術情報

MFC の概念