CArray


CArrayはCObjectから派生した各種オブジェクトを格納するためのテンプレートクラスです。このクラスを使うには、StdAfx.hに次の1行を追加する必要があります。

#include <afxtempl.h>

CArrayはC言語の配列より柔軟で、Addメソッドを使って任意のサイズに拡張できます。また、逆にRemoveAtメソッドで任意の要素を削除することもできます。さらに、InsertAtメソッドで任意の位置に要素を挿入できます。

配列同士の連結もAppendメソッドによって簡単に行うことができます。

配列要素の参照はCの配列と同じようにして[ ]で参照できます。また、SetAt、GetAtメソッドを代わりに使うこともできます。

リスト1にサンプルプログラムを示します。

リスト1

void CCArrayDlg::OnOK() 
{
	CArray array;

	array.Add(CString("CArray1"));
	array.Add(CString("CArray2"));
	array.Add(CString("CArray3"));
	array.Add(CString("CArray4"));
	array.Add(CString("CArray5"));
	array.Add(CString("CArray6"));
	array.Add(CString("CArray7"));
	array.Add(CString("CArray8"));

	CString str("");

	for (int i = 0; i < array.GetSize(); i++)
	{
		str = str + array[i] + "\r\n";	
	}

	SetDlgItemText(IDC_EDIT1, str);

	//CDialog::OnOK();
}

図1 リスト1の実行結果

 

CArrayに似たものにCPtrArrayクラスも用意されています。これは、オブジェクトのポインタ(voidポインタ)の配列を作成するのに使います。

また、CObArrayから派生したCByteArray, CWordArray, CDWordArray, CUIntArray, CStringArrayなども定義されています。これらはテンプレートクラスではありません。