Microsoft Foundation クラス ライブラリには、オブジェクトのグループを管理するためのコレクション クラスが用意されています。 これらのクラスには、次の 2 種類があります。
注
コードで既に非テンプレート コレクション クラスを使用している場合は、引き続き使用できます。 独自のデータ型に対して新しいタイプ セーフなコレクション クラスを記述する場合は、新しいテンプレート ベースのクラスを使用することをお勧めします。
コレクション図形
コレクション クラスは、その "shape" とその要素の型によって特徴付けられます。 図形は、オブジェクトがコレクションによって編成および格納される方法を指します。 MFC には、リスト、配列、マップ (ディクショナリとも呼ばれます) という 3 つの基本的なコレクション図形が用意されています。 特定のプログラミングの問題に最も適したコレクション図形を選択できます。
提供される 3 つのコレクション図形のそれぞれについて、このトピックの後半で簡単に説明します。 図形の機能を比較して、プログラムに最適な要素を決定するには、「 コレクション クラスの選択に関する推奨事項」を参照してください。
一覧
list クラスは、二重リンク リストとして実装される要素の順序付けされたインデックスなしリストを提供します。 リストには "head" と "tail" があり、頭や尾から要素を追加または削除したり、中央に要素を挿入または削除したりするのは非常に高速です。
配列
配列クラスは、オブジェクトの動的なサイズ、順序付け、および整数インデックス付き配列を提供します。
マップ (辞書とも呼ばれます)
マップは、キー オブジェクトを値オブジェクトに関連付けるコレクションです。
Template-Based コレクション クラス
任意の型のオブジェクトを含むタイプ セーフ コレクションを実装する最も簡単な方法は、MFC テンプレート ベースのクラスのいずれかを使用することです。 これらのクラスの例については、MFC サンプル COLLECT を参照してください。
次の表に、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++ テンプレートを使用するかどうか
コレクションに格納されている要素をシリアル化できるかどうか
コレクションに格納されている要素を診断用にダンプできるかどうか
コレクションがタイプ セーフかどうか