C 배열과 마찬가지로 수 있지만 동적으로 줄이고 수 만큼 증가 하는 배열을 지원 합니다.
| Name | 설명 |
|---|---|
| CArray::CArray | 빈 배열을 생성합니다. |
| Name | 설명 |
|---|---|
| CArray::Add | 배열의 끝에 요소를 추가합니다. 배열에 필요한 경우 확장 됩니다. |
| CArray::Append | 다른 배열 배열에 추가 합니다. 필요한 경우 배열의 증가 |
| CArray::Copy | 다른 배열 배열에 복사 합니다. 배열에 필요한 경우 확장 됩니다. |
| CArray::ElementAt | 임시 참조 배열 내의 요소 포인터를 반환합니다. |
| CArray::FreeExtra | 현재 상한 위의 모든 사용 되지 않는 메모리를 해제합니다. |
| CArray::GetAt | 지정 된 인덱스의 값을 반환합니다. |
| CArray::GetCount | 이 배열의 요소 수를 가져옵니다. |
| CArray::GetData | 배열 요소에 액세스할 수 있습니다. 수 NULL. |
| CArray::GetSize | 이 배열의 요소 수를 가져옵니다. |
| CArray::GetUpperBound | 가장 큰 올바른 인덱스를 반환합니다. |
| CArray::InsertAt | 요소를 다른 배열의 모든 요소는 지정 된 인덱스에 삽입합니다. |
| CArray::IsEmpty | 배열이 비어 있는지 여부를 결정 합니다. |
| CArray::RemoveAll | 이 배열에서 모든 요소를 제거합니다. |
| CArray::RemoveAt | 특정 인덱스에 있는 요소를 제거합니다. |
| CArray::SetAt | 지정 된 인덱스 값으로 설정합니다. 배열 증가할 수 없습니다. |
| CArray::SetAtGrow | 지정 된 인덱스 값으로 설정합니다. 배열에 필요한 경우 확장 됩니다. |
| CArray::SetSize | 이 배열에 포함 될 수 있는 요소를 설정 합니다. |
| Name | 설명 |
|---|---|
| CArray::operator | 설정 하거나 지정 된 인덱스에 있는 요소를 가져옵니다. |
배열 인덱스는 항상 0 위치에서 시작합니다. 상한 수정 또는 확장 과거 현재 바인딩 요소를 추가 하면 배열에 사용 여부를 결정할 수 있습니다. 일부 요소가 null 인 경우에 상한에 연속적으로 메모리를 할당 합니다.
|
|---|
크기를 조정 하는 대부분의 메서드는 |
C 배열의 액세스 때와 마찬가지로 CArray 인덱스 요소 상수 이며 배열 크기에 독립적입니다.
|
|---|
배열을 사용 하기 전에 사용 SetSize 크기를 설정 하 고 메모리를 할당 합니다. 사용 하지 않는 경우 |
배열의 개별 요소를 덤프 해야 하는 경우의 깊이 설정에서 CDumpContext 1 또는 큰.
특정 멤버 함수 전역 도우미 함수는이 클래스 호출의 대부분의 사용에 대해 사용자 지정 해야 합니다의 CArray클래스입니다. 항목을 참조 하십시오. 컬렉션 클래스 도우미 MFC 매크로 전역 변수 섹션에서 합니다.
배열 클래스 파생 목록 파생 처럼입니다.
---------------------------------------------------------
MFC에서 제공하는 CArray는 사용자가 원하는 자료형을 동적배열 사용할 수 있게 해준다.
기존의 자료형이나 클래스, 구조체도 사용 가능하다.
1. 준비
afxtempl.h
CArray를 사용하기 위해서는 위 라이브러리가 필요하다
2. 선언
CArray <CPoint, CPoint&> m_vMCursor;
CPoint라는 클래스를 동적배열로 선언하였다.
파마스에 사용된것으로 마우스 클릭마다 x,y좌료를 배열에 저장하기 위해 CPoint로 선언하였다.
<,&> 이부분에 사용자가 정의한 클래스나 구조체, 기존 자료형, 클래스 모두 사용 가능하다.
3. 배열 추가
CPoint mPoint;
mPoint.x=100;
mPoint.y=100;
m_vMCursor.Add(mPoint);
Add()함수를 사용하여 배열추가를 하고 당연히 인자 자료형은 처음에 선언한 것과 동일해야한다.
m_vMCursor.InsertAt(0,mPoint);
InsertAt()함수는 원하는 위치에 자료를 추가한다. 추가하기전에 그 위치에 원래 있던 자료와 그뒤 자료들의 인덱스를 증가시키고 추가하게 된다.
첫번째 인자 원하는 위치
m_vMCursor.SetAt(0,mPoint);
SetAt()함수는 원하는 위치의 자료를 바꾼다. 다른 자료들의 인덱스는 변하지않고 원하는 위치의 자료만 다른 자료로 바꾼다.
첫번째 인자 원하는 위치
4. 자료 가져오기
CPoint mPoint;
mPoint=m_vMCursor.GetAt(0);
GetAt()함수를 사용하며 인자는 자료를 가져오기 원하는 배열의 순서이다.
int i;
i=m_vMCursor.GetSize();
GetSize()함수는 배열의 크기를 가져온다.
for (i=0; i<m_vMCursor.GetSize();i++)
{
mPoint=m_vMCursor.GetAt(i);
SetCursorPos(mPoint.x,mPoint.y);
.................
}
이런식으로 사용하면 된다.
5. 배열 삭제
vMCursor.RemoveAt(0);
RemoveAt()함수는 원하는 위치의 자료를 지우고 그 뒤자료들의 인덱스를 감소시켜 빈공간을 채운다.
m_vMCursor.RemoveAll();
RemoveAll()함수는 배열의 모든 내용을 지운다.
[출처] MS Visual MFC - CArray 배열|작성자 스피어
class CParam
{
public:
CString csFuncID;
long nID1;
BOOL bReturn;
};
void CArrayTest()
{
long nCount;
// 동적 배열 설정
CArray <CParam, CParam&> caParam;
CParam cpTemp;
CParam cpGetData;
// 배열 사이즈 설정
caParam.SetSize(0);
cpTemp.csFuncID = "TEST0";
cpTemp.nID1 = 0;
cpTemp.bReturn = TRUE;
// 배열에 요소 추가
caParam.Add(cpTemp);
cpTemp.csFuncID = "TEST5";
cpTemp.nID1 = 5;
cpTemp.bReturn = FALSE;
caParam.Add(cpTemp);
cpTemp.csFuncID = "TEST3";
cpTemp.nID1 = 3;
cpTemp.bReturn = FALSE;
caParam.Add(cpTemp);
cpTemp.csFuncID = "TEST2";
cpTemp.nID1 = 2;
cpTemp.bReturn = FALSE;
// 배열에 지정한 위치에 요소 추가
caParam.InsertAt(1, cpTemp);
// 지정한 요소 삭제
caParam.RemoveAt(2);
cpTemp.csFuncID = "TEST1";
cpTemp.nID1 = 1;
cpTemp.bReturn = TRUE;
// 지정한 요소 대입
caParam.SetAt(0, cpTemp);
// 배열의 요소수 취득
for(nCount = 0; nCount < caParam.GetCount(); nCount++)
{
// 지정한 요소 데이터 취득
cpGetData = caParam.GetAt(nCount);
}
}Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5