CObList::RemoveAt
更新 : 2007 年 11 月
リストから指定された要素を削除します。
void RemoveAt(
POSITION position
);
パラメータ
- position
リストから削除する要素の位置。
解説
CObList から要素を削除したとき、リストからオブジェクトのポインタが削除されます。オブジェクト自体はユーザーが削除する必要があります。
POSITION 値がリスト内の正しい位置を指していることを確認する必要があります。この値が無効な場合は、MFC ライブラリのデバッグ環境ではアサートされます。
CObList::RemoveAt に類似している他のメンバ関数を以下に示します。
クラス |
メンバ関数 |
---|---|
void RemoveAt( POSITIONposition ); |
|
void RemoveAt( POSITIONposition ); |
使用例
順次アクセス中に要素を削除するときは、十分な注意が必要です。次の例は、GetNext 関数で正しい POSITION 値を保証する削除の方法を示します。
CAge クラスのリストについては、「CObList::CObList」を参照してください。
CObList list;
POSITION pos1, pos2;
CObject* pa;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40));
list.AddHead(new CAge(65)); // List now contains (65 40, 21).
for (pos1 = list.GetHeadPosition(); (pos2 = pos1) != NULL;)
{
if (*(CAge*) list.GetNext(pos1) == CAge(40))
{
pa = list.GetAt(pos2); // Save the old pointer for
//deletion.
list.RemoveAt(pos2);
delete pa; // Deletion avoids memory leak.
}
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &list << _T("\n");
#endif
このプログラムの実行結果は次のようになります。
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
必要条件
ヘッダー : afxcoll.h