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 매크로를 사용해야 합니다.
상속 계층 구조
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
클래스