다음을 통해 공유


CObject 컬렉션의 모든 개체를 삭제합니다.

이 컬렉션의 모든 개체 (컬렉션 개체 자체를 삭제 하지 않고)를 삭제 하는 방법을 설명 합니다.

컬렉션의 모든 개체를 삭제 하려면 CObjects (또는에서 파생 된 개체의 CObject), 반복의 문서에서 설명한 방법 중 하나를 사용 컬렉션의 모든 멤버에 액세스할 을 차례로 각 개체를 삭제 합니다.

주의 정보주의

컬렉션에서 개체를 공유할 수 있습니다.즉, 컬렉션 개체에 대 한 포인터를 유지 하지만 프로그램의 다른 부분과 동일한 개체에 대 한 포인터에도 있을 수 있습니다.개체를 사용 하 여 모든 부분이 완료 될 때까지 공유 되는 개체를 삭제 하지 않도록 주의 해야 합니다.

이 문서는 개체를 삭제 하는 방법을 보여 줍니다.

  • 목록

  • 배열

  • 지도

포인터를 Cobject의 목록에 있는 모든 개체를 삭제 하려면

  1. 사용 GetHeadPositionGetNext 의 목록을 반복 합니다.

  2. 사용의 삭제 연산자 나올 때마다 반복에서 각 객체를 삭제할 수 있습니다.

  3. 호출 하는 RemoveAll 함수 요소와 관련 된 개체를 삭제 한 후 목록에서 모든 요소를 제거 합니다.

다음 예제에서는 목록에서 모든 개체를 삭제 하는 방법을 보여 줍니다. CPerson 개체입니다.목록에서 각 개체에 대 한 포인터입니다 있는 CPerson 원래 힙에 할당 된 개체입니다.

CTypedPtrList<CObList, CPerson*> myList;
CPerson* pPerson = new CPerson();
myList.AddHead(pPerson);
POSITION pos = myList.GetHeadPosition();

while(pos != NULL)
{
   delete myList.GetNext(pos);
}
myList.RemoveAll();     

마지막 함수 호출을 RemoveAll, 목록에서 모든 요소를 제거 하는 목록 멤버 함수입니다.멤버 함수 RemoveAt 단일 요소를 제거 합니다.

요소의 개체를 삭제 하 고 있는 요소를 제거 합니다.의 차이 확인 합니다.단순히 목록에서 요소를 제거의 목록 개체 참조를 제거 합니다.개체는 메모리에 남아 있습니다.개체를 삭제 하면이 소멸 되 고 메모리는 재활용 됩니다.따라서 요소의 개체 삭제 된 목록을 더 이상 존재 하는 개체에 액세스를 시도 하지 않도록 즉시 요소를 제거 하는 것이 중요 합니다.

배열의 모든 요소를 삭제 하려면

  1. 사용 GetSize 과 정수 인덱스 값의 배열을 반복할 수 있습니다.

  2. 사용은 삭제 연산자 나올 때마다 반복에서 각 요소를 삭제 합니다.

  3. 호출 하는 RemoveAll 함수를 삭제 한 후에 배열에서 모든 요소를 제거 합니다.

    배열의 모든 요소를 삭제 하는 코드는 다음과 같습니다.

    CArray<CPerson*, CPerson*> myArray;
    
    int i = 0;
    while (i < myArray.GetSize())
    {
       delete myArray.GetAt(i++);
    }
    
    myArray.RemoveAll();        
    

호출할 수 있는 위의 목록 예제와 같이 RemoveAll 배열에서 모든 요소를 제거 하려면 또는 RemoveAt 개별 요소를 제거 합니다.

맵의 모든 요소를 삭제 하려면

  1. 사용 GetStartPositionGetNextAssoc 배열에서 반복 합니다.

  2. 사용은 삭제 연산자를 반복에서 나올 때마다 키 및/또는 각 지도 요소에 대 한 값을 삭제 합니다.

  3. 호출 하는 RemoveAll 함수를 삭제 한 후 지도에서 모든 요소를 제거 합니다.

    모든 요소를 삭제 하는 코드는 CMap 컬렉션은 다음과 같습니다.지도에서 각 요소의 키로 문자열을 포함 하는 CPerson 개체 (파생 CObject) 값으로.

    CMap<CString, LPCTSTR, CPerson*, CPerson*> myMap;
    // ... Add some key-value elements ...
    // Now delete the elements
    POSITION pos = myMap.GetStartPosition();
    while(pos != NULL)
    {
       CPerson* pPerson;
       CString string;
       // Gets key (string) and value (pPerson)
       myMap.GetNextAssoc(pos, string, pPerson);
       delete pPerson;
    }
    // RemoveAll deletes the keys
    myMap.RemoveAll();      
    

호출할 수 있는 RemoveAll 맵에 모든 요소를 제거 하려면 또는 RemoveKey 지정한 키와 개별 요소를 제거 합니다.

참고 항목

작업

컬렉션의 모든 멤버에 액세스