CArray クラス
更新 : 2007 年 11 月
C 言語の配列に似ていますが、必要に応じて動的に配列の縮小や拡張ができます。
template < class TYPE, class ARG_TYPE = const TYPE& >
class CArray :
public CObject
パラメータ
TYPE
配列に格納されるオブジェクトの型を指定するテンプレート パラメータ。TYPE は、CArray が返すパラメータです。ARG*_*TYPE
配列に格納されているオブジェクトにアクセスするときに使われる引数の型を指定するテンプレート パラメータ。通常、TYPE への参照です。ARG_TYPE は、CArray に渡すパラメータです。
解説
配列のインデックスは常に 0 から始まります。現在の上限を越えて要素を追加したときに、インデックスの上限を固定するか、配列を拡張するかどうかを指定できます。一部の要素が無効 (NULL) の場合でも、メモリは上限まで継続的に割り当てられます。
C 言語の配列と同じように、CArray の要素にインデックスを使ってアクセスする時間は一定で、配列のサイズとは無関係です。
ヒント : |
---|
配列を使う場合は、あらかじめ SetSize 関数で配列のサイズを確定し、そのメモリを確保します。SetSize を使用せずに要素を配列に追加すると、配列が頻繁に再割り当てされ、コピーされます。頻繁に再割り当てとコピーを行うとパフォーマンスが低下し、メモリ断片化の原因になります。 |
配列の各要素をダンプする必要があるときは、CDumpContext オブジェクトの深さのパラメータを 1 以上に設定します。
このクラスの一部のメンバ関数は、グローバルなヘルパー関数を呼び出します。したがって、CArray クラスの主な用途に合わせて、これらのヘルパー関数をカスタマイズする必要があります。「MFC マクロとグローバル」の「コレクション クラスのヘルパ」を参照してください。
配列クラスの派生は、リストの派生と同様です。
CArray の使い方の詳細については、「コレクション クラス」を参照してください。
必要条件
ヘッダー : afxtempl.h
参照
処理手順
COLLECT サンプル : MFC コレクション クラスの例