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