CObArray::RemoveAt
配列の指定したインデックス位置から 1 つ以上の要素を削除します。
void RemoveAt(
INT_PTR nIndex,
INT_PTR nCount = 1
);
パラメーター
nIndex
整数のインデックス。このインデックスは 0 以上で GetUpperBound 関数で返される値以下です。nCount
削除する要素の数。
解説
削除処理では、削除された要素以降にあるすべての要素がシフト ダウンします。 配列の上限は減少しますが、メモリは解放しません。
配列の削除位置以降にある要素数以上の要素を削除しようとすると、ライブラリのデバッグ バージョンではアサートされます。
RemoveAt 関数は、配列から CObject ポインターを削除しますが、オブジェクトそのものは削除しません。
CObArray::RemoveAt に類似している他のメンバー関数を以下に示します。
Class |
メンバー関数 |
---|---|
void RemoveAt( INT_PTR nIndex, INT_PTR nCount = 1 ); |
|
void RemoveAt( INT_PTR nIndex, INT_PTR nCount = 1 ); |
|
void RemoveAt( INT_PTR nIndex, INT_PTR nCount = 1 ); |
|
void RemoveAt( INT_PTR nIndex, INT_PTR nCount = 1 ); |
|
void RemoveAt( INT_PTR nIndex, INT_PTR nCount = 1 ); |
|
void RemoveAt( INT_PTR nIndex, INT_PTR nCount = 1 ); |
使用例
すべてのコレクションの例で使われている CAge クラスのリストについては、CObList::CObList を参照してください。
CObArray arr;
CObject* pa;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
if((pa = arr.GetAt(0)) != NULL)
{
arr.RemoveAt(0); // Element 1 moves to 0.
delete pa; // Delete the original element at 0.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &arr << _T("\n");
#endif
このプログラムの実行結果は次のようになります。
RemoveAt example: A CObArray with 1 elements
[0] = a CAge at $4606 40
必要条件
**ヘッダー:**afxcoll.h