次の方法で共有


CArray クラス

C 言語の配列に似ていますが、必要に応じて動的に配列の縮小や拡張ができます。

template < class TYPE, class ARG_TYPE = const TYPE& > 
class CArray : 
   public CObject

パラメーター

  • TYPE
    配列に格納されるオブジェクトの型を指定するテンプレート パラメーター。TYPE は、CArray が返すパラメーターです。

  • ARG*_*TYPE
    配列に格納されているオブジェクトにアクセスするときに使われる引数の型を指定するテンプレート パラメーター。通常、TYPE への参照です。ARG_TYPE は、CArray に渡すパラメーターです。

メンバー

4h2f09ct.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CArray::CArray

空の配列を生成します。

4h2f09ct.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CArray::Add

配列の最後に要素を追加します。必要に応じて配列を拡張します。

CArray::Append

配列に別の配列を追加します。必要に応じて配列を拡張します。

CArray::Copy

配列に別の配列をコピーします。必要に応じて配列を拡張します。

CArray::ElementAt

配列内のポインター要素への一時的な参照を返します。

CArray::FreeExtra

現在の上限を超える領域の未使用メモリ全体を解放します。

CArray::GetAt

指定したインデックス位置にある値を返します。

CArray::GetCount

配列の要素数を取得します。

CArray::GetData

配列内の要素にアクセスできます。NULL の場合もあります。

CArray::GetSize

配列の要素数を取得します。

CArray::GetUpperBound

有効なインデックスの最大値を返します。

CArray::InsertAt

配列の指定したインデックス位置に要素 (または別の配列のすべての要素) を挿入します。

CArray::IsEmpty

配列が空かどうかを判断します。

CArray::RemoveAll

配列のすべての要素を削除します。

CArray::RemoveAt

指定したインデックス位置にある要素を削除します。

CArray::SetAt

指定したインデックス位置に値を設定します。配列の拡張はできません。

CArray::SetAtGrow

指定したインデックス位置に値を設定します。必要に応じて配列を拡張します。

CArray::SetSize

配列に格納する要素数を設定します。

4h2f09ct.collapse_all(ja-jp,VS.110).gifパブリック演算子

名前

説明

CArray::operator [ ]

指定したインデックス位置の要素を設定または取得します。

解説

配列のインデックスは常に 0 から始まります。インデックスの上限を固定するか、現在の上限を越えて要素を追加したときに配列を拡張できるようにするかを指定できます。一部の要素が無効 (NULL) の場合でも、メモリは上限まで継続的に割り当てられます。

[!メモ]

CArray オブジェクトのサイズを変更するメソッドや、オブジェクトに要素を追加するメソッドは、ほとんどの場合、memcpy_s を使用して要素を移動します。memcpy_s は、コンストラクターを呼び出す必要のあるオブジェクトと互換性がないため、これは問題になります。CArray 内の項目が memcpy_s と互換性がない場合は、適切なサイズで新しい CArray を作成する必要があります。その後、新しい配列にデータを追加するには、CArray::CopyCArray::SetAt を使用する必要があります。これらのメソッドでは、memcpy_s ではなく代入演算子が使用されます。

C 言語の配列と同じように、CArray の要素にインデックスを使ってアクセスする時間は一定で、配列のサイズとは無関係です。

ヒントヒント

配列を使う場合は、あらかじめ SetSize 関数で配列のサイズを確定し、そのメモリを確保します。SetSize を使用せずに要素を配列に追加すると、配列が頻繁に再割り当てされ、コピーされます。頻繁に再割り当てとコピーを行うとパフォーマンスが低下し、メモリ断片化の原因になります。

配列の各要素をダンプする必要があるときは、CDumpContext オブジェクトの深さのパラメーターを 1 以上に設定します。

このクラスの一部のメンバー関数は、グローバルなヘルパー関数を呼び出します。したがって、CArray クラスの主な用途に合わせて、これらのヘルパー関数をカスタマイズする必要があります。「MFC マクロとグローバル」の「コレクション クラスのヘルパー」を参照してください。

配列クラスの派生は、リストの派生と同様です。

CArray を使用する方法の詳細については、「コレクション」を参照してください。

継承階層

CObject

CArray

必要条件

Header: afxtempl.h

参照

関連項目

CObject クラス

階層図

CObArray クラス

概念

MFC のサンプルが収集されます

その他の技術情報

コレクション クラスのヘルパー