CObArrayクラスを使った配列処理
CObArrayクラスを使うと、CObjectの配列を扱うことができる。
ここでは、CObArrayと類似したCPtrArrayクラスを使って説明する。
// 配列の宣言
CPtrArray m_PtrArray;
- 配列への要素の追加と要素の取得
- 配列へ要素を追加するには、InsertAt関数を使用する。
その際、第1引数にGetSize関数の戻り値を使用すれば、
配列の最後尾に要素を追加することができる。
配列の要素を取得するには、GetAt関数を使用する。引数には配列の要素番号を指定する。
// 配列への要素の追加
int* pi = new int;
*pi = 413;
m_PtrArray.InsertAt(m_PtrArray.GetSize(), pi);
// 配列の要素の取得
int* pElement = (int*)m_PtrArray.GetAt(0);
- 配列の全要素の削除
- 配列の全要素を削除するには、まず全ての要素が指し示すポインタの先の値を削除しなければならない。
その後RemoveAll関数で配列の全要素を削除する。
// 配列の全要素の削除
int arraySize = m_PtrArray.GetSize();
int* pDel;
for( int j = 0; j < arraySize; j++ ) {
pDel = (int*)m_PtrArray.GetAt(j);
delete pDel;
}
m_PtrArray.RemoveAll();
目次へ
CObListクラスを使った線形リスト処理
CObListクラスを使うと、CObjectの線形リストを扱うことができる。
ここでは、CObListと類似したCPtrListクラスを使って説明する。
// リストの宣言
CPtrList m_PtrList;
- リストへの要素の追加
- リストの最後尾へ要素を追加するには、AddTail関数を使用する。
// リストへの要素の追加
int* pi = new int;
*pi = 413;
m_PtrList.AddTail(pi);
- リストの要素への順次アクセス
- リストの要素をたどっていくには、次のような処理を行う。
POSITION pos;
for( pos = m_PtrList.GetHeadPosition(); pos != NULL; ) {
pi = (int*)m_PtrList.GetNext(pos);
}
次のように処理を追加すれば、リストの全要素を削除することができる。
POSITION pos;
for( pos = m_PtrList.GetHeadPosition(); pos != NULL; ) {
pi = (int*)m_PtrList.GetNext(pos);
delete pi;
}
m_PtrList.RemoveAll();
- ※ CObListとCPtrListの違い
- CObList、CPtrListとも、オブジェクトへのポインタのリストであることに関しては違いはない。
異なるのは、CObListクラスはCObject型(正確にはCObjectクラスの派生クラス型)のポインタしか扱うことができないこと、
そしてシリアル化をサポートしているという点である。
目次へ