次の方法で共有


CObArray::RemoveAt

更新 : 2007 年 11 月

配列の指定したインデックス位置から 1 つ以上の要素を削除します。

void RemoveAt(
   INT_PTR nIndex,
   INT_PTR nCount = 1 
);

パラメータ

  • nIndex
    整数のインデックス。このインデックスは 0 以上で GetUpperBound 関数で返される値以下です。

  • nCount
    削除する要素の数。

解説

削除処理では、削除された要素以降にあるすべての要素がシフト ダウンします。配列の上限は減少しますが、メモリは解放しません。

配列の削除位置以降にある要素数以上の要素を削除しようとすると、ライブラリのデバッグ バージョンではアサートされます。

RemoveAt 関数は、配列から CObject ポインタを削除しますが、オブジェクトそのものは削除しません。

CObArray::RemoveAt に類似している他のメンバ関数を以下に示します。

クラス

メンバ関数

CByteArray

void RemoveAt( INT_PTRnIndex, INT_PTRnCount = 1 );

CDWordArray

void RemoveAt( INT_PTRnIndex, INT_PTRnCount = 1 );

CPtrArray

void RemoveAt( INT_PTRnIndex, INT_PTRnCount = 1 );

CStringArray

void RemoveAt( INT_PTRnIndex, INT_PTRnCount = 1 );

CUIntArray

void RemoveAt( INT_PTRnIndex, INT_PTRnCount = 1 );

CWordArray

void RemoveAt( INT_PTRnIndex, 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

参照

参照

CObArray クラス

階層図

CObArray::SetAt

CObArray::SetAtGrow

CObArray::InsertAt

その他の技術情報

CObArray のメンバ