다음을 통해 공유


CObArray 수업

CObject 포인터 배열을 지원합니다.

구문

class CObArray : public CObject

멤버

공용 생성자

속성 설명
CObArray::CObArray 포인터에 대한 빈 배열을 CObject 생성합니다.

공용 메서드

이름 설명
CObArray::Add 배열 끝에 요소를 추가하고 필요하면 배열을 확장합니다.
CObArray::Append 배열에 다른 배열을 추가하고 필요하면 배열을 확장합니다.
CObArray::Copy 배열에 다른 배열을 복사하고 필요하면 배열을 확장합니다.
CObArray::ElementAt 배열 내의 요소 포인터에 대한 임시 참조를 반환합니다.
CObArray::FreeExtra 현재 상한을 초과하며 사용되지 않는 모든 메모리를 해제합니다.
CObArray::GetAt 지정된 인덱스의 값을 반환합니다.
CObArray::GetCount 이 배열에 있는 요소의 수를 가져옵니다.
CObArray::GetData 배열의 요소에 대한 액세스를 허용합니다. NULL일 수 있습니다.
CObArray::GetSize 이 배열에 있는 요소의 수를 가져옵니다.
CObArray::GetUpperBound 유효한 최대 인덱스를 반환합니다.
CObArray::InsertAt 지정한 인덱스에 요소 하나 또는 다른 배열의 모든 요소를 삽입합니다.
CObArray::IsEmpty 배열이 비어 있는지를 확인합니다.
CObArray::RemoveAll 이 배열의 모든 요소를 반환합니다.
CObArray::RemoveAt 특정 인덱스의 요소를 제거합니다.
CObArray::SetAt 지정된 인덱스의 값을 설정합니다. 배열은 확장할 수 없습니다.
CObArray::SetAtGrow 지정된 인덱스의 값을 설정합니다. 필요한 경우 배열을 확장합니다.
CObArray::SetSize 이 배열에 포함된 요소의 수를 설정합니다.

Public 연산자

속성 설명
CObArray::operator [] 지정한 인덱스에 있는 요소를 설정하거나 가져옵니다.

설명

이러한 개체 배열은 C 배열과 유사하지만 필요에 따라 동적으로 축소 및 확장할 수 있습니다.

배열 인덱스는 항상 위치 0에서 시작합니다. 현재 바인딩된 요소를 추가할 때 상한을 수정할지 아니면 배열을 확장하도록 허용할지 결정할 수 있습니다. 메모리는 일부 요소가 있더라도 상한에 연속적으로 할당됩니다 NULL.

Win32에서 개체의 CObArray 크기는 사용 가능한 메모리로만 제한됩니다.

C 배열과 마찬가지로 인덱싱된 요소에 대한 CObArray 액세스 시간은 상수이며 배열 크기와 독립적입니다.

CObArray는 serialization 및 요소 덤프를 지원하기 위해 IMPLEMENT_SERIAL 매크로를 통합합니다. 포인터 배열 CObject 이 오버로드된 삽입 연산자 또는 Serialize 멤버 함수를 사용하여 보관에 저장되는 경우 각 CObject 요소는 배열 인덱스와 함께 차례로 serialize됩니다.

배열에 개별 CObject 요소의 덤프가 필요한 경우 개체의 깊이를 CDumpContext 1 이상으로 설정해야 합니다.

개체가 CObArray 삭제되거나 요소가 제거되면 포인터만 CObject 제거되고 참조하는 개체는 제거되지 않습니다.

참고 항목

배열을 사용하기 전에 SetSize를 사용하여 배열 크기를 설정하고 배열에 대해 메모리를 할당합니다. SetSize를 사용하지 않는 경우 배열에 요소를 추가하면 배열이 자주 다시 할당되고 복사됩니다. 이처럼 다시 할당 및 복사가 자주 수행되면 효율성이 떨어지며 메모리가 조각화될 수 있습니다.

배열 클래스 파생은 목록 파생과 유사합니다. 특수 용도 목록 클래스의 파생에 대한 자세한 내용은 컬렉션 문서를 참조하세요.

참고 항목

배열을 serialize하려는 경우 파생 클래스의 구현에서 IMPLEMENT_SERIAL 매크로를 사용해야 합니다.

상속 계층 구조

CObject

CObArray

요구 사항

머리글: afxcoll.h

CObArray::Add

배열의 끝에 새 요소를 추가하여 배열을 1씩 증가합니다.

INT_PTR Add(CObject* newElement);

매개 변수

newElement
CObject 이 배열에 추가할 포인터입니다.

Return Value

추가된 요소의 인덱스입니다.

설명

SetSize 값이 nGrowBy 1보다 큰 경우 추가 메모리가 할당될 수 있습니다. 그러나 상한은 1씩만 증가합니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::Add보여 줍니다.

클래스 멤버 함수
CByteArray INT_PTR Add(BYTE newElement);

throw(CMemoryException*);
CDWordArray INT_PTR Add(DWORD newElement);

throw(CMemoryException*);
CPtrArray INT_PTR Add(void* newElement);

throw(CMemoryException*);
CStringArray INT_PTR Add(LPCTSTR newElement); throw(CMemoryException*);

INT_PTR Add(const CString& newElement);
CUIntArray INT_PTR Add(UINT newElement);

throw(CMemoryException*);
CWordArray INT_PTR Add(WORD newElement);

throw(CMemoryException*);

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;

arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
#ifdef _DEBUG
   afxDump.SetDepth(1);
   afxDump << _T("Add example: ") << &arr << _T("\n");
#endif      

이 프로그램의 결과는 다음과 같습니다.

Add example: A CObArray with 2 elements
[0] = a CAge at $442A 21
[1] = a CAge at $4468 40

CObArray::Append

이 멤버 함수를 호출하여 지정된 배열의 끝에 다른 배열의 내용을 추가합니다.

INT_PTR Append(const CObArray& src);

매개 변수

src
배열에 추가할 요소의 원본입니다.

Return Value

추가된 첫 번째 요소의 인덱스입니다.

설명

배열은 동일한 형식이어야 합니다.

필요한 경우 배열에 Append 추가된 요소를 수용하기 위해 추가 메모리를 할당할 수 있습니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::Append보여 줍니다.

클래스 멤버 함수
CByteArray INT_PTR Append(const CByteArray& src);
CDWordArray INT_PTR Append(const CDWordArray& src);
CPtrArray INT_PTR Append(const CPtrArray& src);
CStringArray INT_PTR Append(const CStringArray& src);
CUIntArray INT_PTR Append(const CUIntArray& src);
CWordArray INT_PTR Append(const CWordArray& src);

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray myArray1, myArray2;

// Add elements to the second array.
myArray2.Add(new CAge(21));
myArray2.Add(new CAge(42));

// Add elements to the first array and also append the second array.
myArray1.Add(new CAge(3));
myArray1.Append(myArray2);

#ifdef _DEBUG
   afxDump.SetDepth(1);
   afxDump << _T("myArray1: ") << &myArray1 << _T("\n");
   afxDump << _T("myArray2: ") << &myArray2 << _T("\n");
#endif      

CObArray::Copy

지정된 배열의 요소를 동일한 형식의 다른 배열의 요소로 덮어쓰려면 이 멤버 함수를 호출합니다.

void Copy(const CObArray& src);

매개 변수

src
배열에 복사할 요소의 원본입니다.

설명

Copy 는 메모리를 해제하지 않습니다. 필요한 경우 배열에 Copy 복사된 요소를 수용하기 위해 추가 메모리를 할당할 수 있습니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::Copy보여 줍니다.

클래스 멤버 함수
CByteArray void Copy(const CByteArray& src);
CDWordArray void Copy(const CDWordArray& src);
CPtrArray void Copy(const CPtrArray& src);
CStringArray void Copy(const CStringArray& src);
CUIntArray void Copy(const CUIntArray& src);
CWordArray void Copy(const CWordArray& src);

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray myArray1, myArray2;

// Add elements to the second array.
myArray2.Add(new CAge(21));
myArray2.Add(new CAge(42));

// Copy the elements from the second array to the first.
myArray1.Copy(myArray2);

#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << "myArray1: " << &myArray1 << "\n";
afxDump << "myArray2: " << &myArray2 << "\n";
#endif      

CObArray::CObArray

CObject 포인터 배열을 생성합니다.

CObArray();

설명

배열은 한 번에 하나의 요소를 증가합니다.

다음 표에서는 CObArray::CObArray.

클래스 생성자
CByteArray CByteArray();
CDWordArray CDWordArray();
CPtrArray CPtrArray();
CStringArray CStringArray();
CUIntArray CUIntArray();
CWordArray CWordArray();

예시

CObArray arr; //Array with default blocksize
CObArray* pArray = new CObArray; //Array on the heap with default blocksize      

CObArray::ElementAt

배열 내의 요소 포인터에 대한 임시 참조를 반환합니다.

CObject*& ElementAt(INT_PTR nIndex);

매개 변수

nIndex
0보다 크거나 같고 반환된 값 GetUpperBound보다 작거나 같은 정수 인덱스입니다.

Return Value

포인터에 대한 참조입니다 CObject .

설명

배열에 대한 왼쪽 할당 연산자를 구현하는 데 사용됩니다. 특수 배열 연산자를 구현하는 데만 사용해야 하는 고급 함수입니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::ElementAt보여 줍니다.

클래스 멤버 함수
CByteArray BYTE& ElementAt(INT_PTR nIndex);
CDWordArray DWORD& ElementAt(INT_PTR nIndex);
CPtrArray void*& ElementAt(INT_PTR nIndex);
CStringArray CString& ElementAt(INT_PTR nIndex);
CUIntArray UINT& ElementAt(INT_PTR nIndex);
CWordArray WORD& ElementAt(INT_PTR nIndex);

예시

CObArray::GetSize에 대한 예를 참조하세요.

CObArray::FreeExtra

배열이 커진 동안 할당된 추가 메모리를 해제합니다.

void FreeExtra();

설명

이 함수는 배열의 크기 또는 상한에 영향을 주지 않습니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::FreeExtra보여 줍니다.

클래스 멤버 함수
CByteArray void FreeExtra();
CDWordArray void FreeExtra();
CPtrArray void FreeExtra();
CStringArray void FreeExtra();
CUIntArray void FreeExtra();
CWordArray void FreeExtra();

예시

CObArray::GetData에 대한 예를 참조하세요.

CObArray::GetAt

지정된 인덱스에서 배열 요소를 반환합니다.

CObject* GetAt(INT_PTR nIndex) const;

매개 변수

nIndex
0보다 크거나 같고 반환된 값 GetUpperBound보다 작거나 같은 정수 인덱스입니다.

Return Value

현재 이 CObject 인덱스에서 포인터 요소입니다.

설명

참고 항목

음수 값 또는 반환 GetUpperBound 된 값보다 큰 값을 전달하면 어설션이 실패합니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::GetAt보여 줍니다.

클래스 멤버 함수
CByteArray BYTE GetAt(INT_PTR nIndex) const;
CDWordArray DWORD GetAt(INT_PTR nIndex) const;
CPtrArray void* GetAt(INT_PTR nIndex) const;
CStringArray const CString& GetAt(INT_PTR nIndex) const;
CUIntArray UINT GetAt(INT_PTR nIndex) const;
CWordArray WORD GetAt(INT_PTR nIndex) const;

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;

arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
ASSERT(*(CAge*) arr.GetAt(0) == CAge(21));      

CObArray::GetCount

배열 요소의 수를 반환합니다.

INT_PTR GetCount() const;

Return Value

배열의 항목 수입니다.

설명

배열의 요소 수를 검색하려면 이 메서드를 호출합니다. 인덱스는 0부터 시작하므로 크기가 가장 큰 인덱스보다 1 더 큽니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::GetCount보여 줍니다.

클래스 멤버 함수
CByteArray INT_PTR GetCount() const;
CDWordArray INT_PTR GetCount() const;
CPtrArray INT_PTR GetCount() const;
CStringArray INT_PTR GetCount() const;
CUIntArray INT_PTR GetCount() const;
CWordArray INT_PTR GetCount() const;

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray myArray;

// Add elements to the array.
for (int i = 0; i < 10; i++)
   myArray.Add(new CAge(i));

// Add 100 to all the elements of the array.
for (int i = 0; i < myArray.GetCount(); i++)
{
   CAge*& pAge = (CAge*&) myArray.ElementAt(i);
   delete pAge;
   pAge = new CAge(100 + i);
}

CObArray::GetData

이 멤버 함수를 사용하여 배열의 요소에 직접 액세스할 수 있습니다.

const CObject** GetData() const;

CObject** GetData();

Return Value

포인터 배열 CObject 에 대한 포인터입니다.

설명

사용할 수 GetData 있는 요소가 없으면 값을 반환합니다 NULL .

배열의 요소에 직접 액세스하면 더 빠르게 작업하는 데 도움이 되지만 호출 GetData할 때는 주의해야 합니다. 오류는 배열의 요소에 직접 영향을 줍니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::GetData보여 줍니다.

클래스 멤버 함수
CByteArray const BYTE* GetData() const; BYTE* GetData();
CDWordArray const DWORD* GetData() const; DWORD* GetData();
CPtrArray const void** GetData() const; void** GetData();
CStringArray const CString* GetData() const; CString* GetData();
CUIntArray const UINT* GetData() const; UINT* GetData();
CWordArray const WORD* GetData() const; WORD* GetData();

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray myArray;

// Allocate memory for at least 32 elements.
myArray.SetSize(32, 128);

// Add elements to the array.
CAge** ppAge = (CAge * *)myArray.GetData();
for (int i = 0; i < 32; i++, ppAge++)
   * ppAge = new CAge(i);

// Only keep first 5 elements and free extra (unused) bytes.
for (int i = 5; i < myArray.GetCount(); i++)
{
   delete myArray[i]; // free objects before resetting array size.         
}
myArray.SetSize(5, 128);
myArray.FreeExtra(); // only frees pointers.

#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("myArray: ") << &myArray << _T("\n");
#endif      

CObArray::GetSize

배열의 크기를 반환합니다.

INT_PTR GetSize() const;

설명

인덱스는 0부터 시작하므로 크기는 가장 큰 인덱스보다 1 더 큽니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::GetSize보여 줍니다.

클래스 멤버 함수
CByteArray INT_PTR GetSize() const;
CDWordArray INT_PTR GetSize() const;
CPtrArray INT_PTR GetSize() const;
CStringArray INT_PTR GetSize() const;
CUIntArray INT_PTR GetSize() const;
CWordArray INT_PTR GetSize() const;

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray myArray;

// Add elements to the array.
for (int i = 0; i < 10; i++)
   myArray.Add(new CAge(i));

// Add 100 to all the elements of the array.
for (int i = 0; i < myArray.GetSize(); i++)
{
   CAge*& pAge = (CAge * &)myArray.ElementAt(i);
   delete pAge;
   pAge = new CAge(100 + i);
}

#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("myArray: ") << &myArray << _T("\n");
#endif      

CObArray::GetUpperBound

이 배열의 현재 상한을 반환합니다.

INT_PTR GetUpperBound() const;

Return Value

상한(0부터)의 인덱스입니다.

설명

배열 인덱스는 0부터 시작하므로 이 함수는 1보다 GetSize작은 값을 반환합니다.

조건은 GetUpperBound() = -1 배열에 요소가 없음을 나타냅니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::GetUpperBound보여 줍니다.

클래스 멤버 함수
CByteArray INT_PTR GetUpperBound() const;
CDWordArray INT_PTR GetUpperBound() const;
CPtrArray INT_PTR GetUpperBound() const;
CStringArray INT_PTR GetUpperBound() const;
CUIntArray INT_PTR GetUpperBound() const;
CWordArray INT_PTR GetUpperBound() const;

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;

arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
ASSERT(arr.GetUpperBound() == 1); // Largest index      

CObArray::InsertAt

지정한 인덱스에 요소 하나 또는 다른 배열의 모든 요소를 삽입합니다.

void InsertAt(
    INT_PTR nIndex,
    CObject* newElement,
    INT_PTR nCount = 1);

void InsertAt(
    INT_PTR nStartIndex,
    CObArray* pNewArray);

매개 변수

nIndex
에서 반환 GetUpperBound한 값보다 클 수 있는 정수 인덱스입니다.

newElement
CObject 배열에 배치할 포인터입니다. 값 NULL 의 A newElement 가 허용됩니다.

nCount
이 요소를 삽입해야 하는 횟수입니다(기본값: 1).

nStartIndex
에서 반환 GetUpperBound한 값보다 클 수 있는 정수 인덱스입니다.

pNewArray
이 배열에 추가할 요소가 포함된 다른 배열입니다.

설명

첫 번째 버전은 배열의 InsertAt 지정된 인덱스에 한 요소(또는 요소의 여러 복사본)를 삽입합니다. 이 프로세스에서는 이 인덱스에서 기존 요소를 위로 이동(인덱스 증가)하고 위의 모든 요소를 위로 이동합니다.

두 번째 버전은 위치에서 시작하여 다른 CObArray 컬렉션의 모든 요소를 삽입합니다 nStartIndex .

반면 함수는 SetAt 지정된 배열 요소 하나를 대체하며 요소를 이동하지 않습니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::InsertAt보여 줍니다.

클래스 멤버 함수
CByteArray void InsertAt(INT_PTR nIndex, BYTE newElement, int nCount = 1);

throw(CMemoryException*);

void InsertAt(INT_PTR nStartIndex, CByteArray* pNewArray);

throw(CMemoryException*);
CDWordArray void InsertAt(INT_PTR nIndex, DWORD newElement, int nCount = 1);

throw(CMemoryException*);

void InsertAt(INT_PTR nStartIndex, CDWordArray* pNewArray);

throw(CMemoryException*);
CPtrArray void InsertAt(INT_PTR nIndex, void* newElement, int nCount = 1);

throw(CMemoryException*);

void InsertAt(INT_PTR nStartIndex, CPtrArray* pNewArray);

throw(CMemoryException*);
CStringArray void InsertAt(INT_PTR nIndex, LPCTSTR newElement, int nCount = 1);

throw(CMemoryException*);

void InsertAt(INT_PTR nStartIndex, CStringArray* pNewArray);

throw(CMemoryException*);
CUIntArray void InsertAt(INT_PTR nIndex, UINT newElement, int nCount = 1);

throw(CMemoryException*);

void InsertAt(INT_PTR nStartIndex, CUIntArray* pNewArray);

throw(CMemoryException*);
CWordArray void InsertAt(INT_PTR nIndex, WORD newElement, int nCount = 1);

throw(CMemoryException*);

void InsertAt(INT_PTR nStartIndex, CWordArray* pNewArray);

throw(CMemoryException*);

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;

arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1 (will become 2).
arr.InsertAt(1, new CAge(30));  // New element 1
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("InsertAt example: ") << &arr << _T("\n");
#endif      

이 프로그램의 결과는 다음과 같습니다.

InsertAt example: A CObArray with 3 elements
[0] = a CAge at $45C8 21
[1] = a CAge at $4646 30
[2] = a CAge at $4606 40

CObArray::IsEmpty

배열이 비어 있는지를 확인합니다.

BOOL IsEmpty() const;

Return Value

배열이 비어 있으면 0이 아닌 경우 그렇지 않으면 0입니다.

CObArray::operator [ ]

이러한 아래 첨자 연산자는 및 GetAt 함수를 SetAt 편리하게 대체합니다.

CObject*& operator[](int_ptr nindex);
CObject* operator[](int_ptr nindex) const;

설명

그렇지 않은 배열에 대해 호출된 const첫 번째 연산자는 assignment 문의 오른쪽(r-value) 또는 왼쪽(l-value)에서 사용할 수 있습니다. 배열에 대해 const 호출되는 두 번째 배열은 오른쪽에서만 사용할 수 있습니다.

라이브러리의 디버그 버전은 할당 문의 왼쪽 또는 오른쪽에 있는 아래 첨자가 범위를 벗어나면 어설션됩니다.

다음 표에서는 CObArray::operator [].

클래스 연산자
CByteArray BYTE& operator [](INT_PTR nindex);

BYTE operator [](INT_PTR nindex) const;
CDWordArray DWORD& operator [](INT_PTR nindex);

DWORD operator [](INT_PTR nindex) const;
CPtrArray void*& operator [](INT_PTR nindex);

void* operator [](INT_PTR nindex) const;
CStringArray CString& operator [](INT_PTR nindex);

CString operator [](INT_PTR nindex) const;
CUIntArray UINT& operator [](INT_PTR nindex);

UINT operator [](INT_PTR nindex) const;
CWordArray WORD& operator [](INT_PTR nindex);

WORD operator [](INT_PTR nindex) const;

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;
CAge* pa;

arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
pa = (CAge*)arr[0]; // Get element 0
ASSERT(*pa == CAge(21)); // Get element 0
arr[0] = new CAge(30); // Replace element 0
delete pa;
ASSERT(*(CAge*)arr[0] == CAge(30)); // Get new element 0      

CObArray::RemoveAll

이 배열에서 모든 포인터를 제거하지만 실제로 개체를 CObject 삭제하지는 않습니다.

void RemoveAll();

설명

배열이 이미 비어 있으면 함수는 계속 작동합니다.

이 함수는 RemoveAll 포인터 스토리지에 사용되는 모든 메모리를 해제합니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::RemoveAll보여 줍니다.

클래스 멤버 함수
CByteArray void RemoveAll();
CDWordArray void RemoveAll();
CPtrArray void RemoveAll();
CStringArray void RemoveAll();
CUIntArray void RemoveAll();
CWordArray void RemoveAll();

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;
CAge* pa1;
CAge* pa2;

arr.Add(pa1 = new CAge(21)); // Element 0
arr.Add(pa2 = new CAge(40)); // Element 1
ASSERT(arr.GetSize() == 2);
arr.RemoveAll(); // Pointers removed but objects not deleted.
ASSERT(arr.GetSize() == 0);
delete pa1;
delete pa2;  // Cleans up memory.      

CObArray::RemoveAt

배열의 지정된 인덱스에서 시작하는 하나 이상의 요소를 제거합니다.

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

매개 변수

nIndex
0보다 크거나 같고 반환된 값 GetUpperBound보다 작거나 같은 정수 인덱스입니다.

nCount
제거할 요소의 수입니다.

설명

이 프로세스에서는 제거된 요소 위의 모든 요소를 아래로 이동합니다. 배열의 상한을 감소하지만 메모리를 해제하지는 않습니다.

제거 지점 위의 배열에 포함된 것보다 많은 요소를 제거하려고 하면 라이브러리의 디버그 버전이 어설션됩니다.

이 함수는 RemoveAt CObject 배열에서 포인터를 제거하지만 개체 자체는 삭제하지 않습니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::RemoveAt보여 줍니다.

클래스 멤버 함수
CByteArray void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1);
CDWordArray void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1);
CPtrArray void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1);
CStringArray void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1);
CUIntArray void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1);
CWordArray 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

CObArray::SetAt

지정된 인덱스에서 배열 요소를 설정합니다.

void SetAt(
    INT_PTR nIndex,
    CObject* newElement);

매개 변수

nIndex
0보다 크거나 같고 반환된 값 GetUpperBound보다 작거나 같은 정수 인덱스입니다.

newElement
이 배열에 삽입할 개체 포인터입니다. NULL 값이 허용됩니다.

설명

SetAt 에서는 배열이 증가하지 않습니다. 배열이 자동으로 증가하도록 하려면 사용합니다 SetAtGrow .

인덱스 값이 배열에서 유효한 위치를 나타내는지 확인합니다. 범위를 벗어난 경우 라이브러리의 디버그 버전이 어설션됩니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::SetAt보여 줍니다.

클래스 멤버 함수
CByteArray void SetAt(INT_PTR nIndex, BYTE newElement);
CDWordArray void SetAt(INT_PTR nIndex, DWORD newElement);
CPtrArray void SetAt(INT_PTR nIndex, void* newElement);
CStringArray void SetAt(INT_PTR nIndex, LPCTSTR newElement);
CUIntArray void SetAt(INT_PTR nIndex, UINT newElement);
CWordArray void SetAt(INT_PTR nIndex, WORD newElement);

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 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.SetAt(0, new CAge(30));  // Replace element 0.
   delete pa; // Delete the original element at 0.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAt example: ") << &arr << _T("\n");
#endif      

이 프로그램의 결과는 다음과 같습니다.

SetAt example: A CObArray with 2 elements
[0] = a CAge at $47E0 30
[1] = a CAge at $47A0 40

CObArray::SetAtGrow

지정된 인덱스에서 배열 요소를 설정합니다.

void SetAtGrow(
    INT_PTR nIndex,
    CObject* newElement);

매개 변수

nIndex
0보다 크거나 같은 정수 인덱스입니다.

newElement
이 배열에 추가할 개체 포인터입니다. NULL 값이 허용됩니다.

설명

필요한 경우 배열이 자동으로 증가합니다(즉, 상한이 새 요소를 수용하도록 조정됨).

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::SetAtGrow보여 줍니다.

클래스 멤버 함수
CByteArray void SetAtGrow(INT_PTR nIndex, BYTE newElement);

throw(CMemoryException*);
CDWordArray void SetAtGrow(INT_PTR nIndex, DWORD newElement);

throw(CMemoryException*);
CPtrArray void SetAtGrow(INT_PTR nIndex, void* newElement);

throw( CMemoryException*);
CStringArray void SetAtGrow(INT_PTR nIndex, LPCTSTR newElement);

throw(CMemoryException*);
CUIntArray void SetAtGrow(INT_PTR nIndex, UINT newElement);

throw(CMemoryException*);
CWordArray void SetAtGrow(INT_PTR nIndex, WORD newElement);

throw(CMemoryException*);

예시

모든 컬렉션 예제에 사용되는 클래스 목록을 CAge 참조 CObList::CObList 하세요.

CObArray arr;

arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
arr.SetAtGrow(3, new CAge(65)); // Element 2 deliberately
                                      // skipped.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAtGrow example: ") << &arr << _T("\n");
#endif      

이 프로그램의 결과는 다음과 같습니다.

SetAtGrow example: A CObArray with 4 elements
[0] = a CAge at $47C0 21
[1] = a CAge at $4800 40
[2] = NULL
[3] = a CAge at $4840 65

CObArray::SetSize

빈 배열 또는 기존 배열의 크기를 설정합니다. 는 필요한 경우 메모리를 할당합니다.

void SetSize(
    INT_PTR nNewSize,
    INT_PTR nGrowBy = -1);

매개 변수

nNewSize
새 배열 크기(요소 수)입니다. 0보다 크거나 같아야 합니다.

nGrowBy
크기 증가가 필요한 경우 할당할 요소 슬롯의 최소 수입니다.

설명

새 크기가 이전 크기보다 작으면 배열이 잘리고 사용되지 않는 모든 메모리가 해제됩니다. 효율성을 위해 배열을 사용하기 전에 배열의 크기를 설정하도록 호출 SetSize 합니다. 이렇게 하면 항목이 추가 될 때마다 배열을 다시 할당하고 복사할 필요가 없습니다.

nGrowBy 배열이 증가하는 동안 매개 변수는 내부 메모리 할당에 영향을 줍니다. 해당 사용은 보고 GetSize GetUpperBound되는 배열 크기에 영향을 미치지 않습니다.

배열의 크기가 커지면 새로 할당된 CObject * 모든 포인터가 로 설정 NULL됩니다.

다음 표에서는 다음과 유사한 다른 멤버 함수를 CObArray::SetSize보여 줍니다.

클래스 멤버 함수
CByteArray void SetSize(INT_PTR nNewSize, int nGrowBy = -1);

throw(CMemoryException*);
CDWordArray void SetSize(INT_PTR nNewSize, int nGrowBy = -1);

throw(CMemoryException*);
CPtrArray void SetSize(INT_PTR nNewSize, int nGrowBy = -1);

throw(CMemoryException*);
CStringArray void SetSize(INT_PTR nNewSize, int nGrowBy = -1);

throw(CMemoryException*);
CUIntArray void SetSize(INT_PTR nNewSize, int nGrowBy = -1);

throw(CMemoryException*);
CWordArray void SetSize(INT_PTR nNewSize, int nGrowBy = -1);

throw(CMemoryException*);

예시

CObArray::GetData에 대한 예를 참조하세요.

참고 항목

CObject 클래스
계층 구조 차트
CStringArray 클래스
CPtrArray 클래스
CByteArray 클래스
CWordArray 클래스
CDWordArray 클래스