조회 수 18117 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

C 배열과 마찬가지로 수 있지만 동적으로 줄이고 수 만큼 증가 하는 배열을 지원 합니다.


Public 생성자

Name설명
CArray::CArray빈 배열을 생성합니다.

Public 메서드

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이 배열에 포함 될 수 있는 요소를 설정 합니다.

Public 연산자

Name설명
CArray::operator설정 하거나 지정 된 인덱스에 있는 요소를 가져옵니다.

배열 인덱스는 항상 0 위치에서 시작합니다. 상한 수정 또는 확장 과거 현재 바인딩 요소를 추가 하면 배열에 사용 여부를 결정할 수 있습니다. 일부 요소가 null 인 경우에 상한에 연속적으로 메모리를 할당 합니다.

System_CAPS_ICON_note.jpg 참고

크기를 조정 하는 대부분의 메서드는 CArray 개체 또는 추가 요소를 사용 하 여 memcpy_s 요소를 이동 합니다. 이 문제는 때문입니다 memcpy_s 호출 하는 생성자가 필요한 모든 개체와 호환 되지 않습니다. 경우 항목에는 CArray 와 호환 되지 않는 memcpy_s를 새로 만들어야 CArray 적절 한 크기의. 다음 사용 해야 CArray::Copy 및 CArray::SetAt 할당 연산자 대신 이러한 메서드를 사용 하기 때문에 새 배열을 채우려면 memcpy_s.

C 배열의 액세스 때와 마찬가지로 CArray 인덱스 요소 상수 이며 배열 크기에 독립적입니다.

System_CAPS_ICON_tip.jpg 

배열을 사용 하기 전에 사용 SetSize 크기를 설정 하 고 메모리를 할당 합니다. 사용 하지 않는 경우 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()함수는 배열의 모든 내용을 지운다.



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);
    }

}








Dreamy의 코드 스크랩

내가 모으고 내가 보는

List of Articles
번호 분류 제목 날짜 조회 수 추천 수
405 Pi SSD1306 OLED Displays with Raspberry Pi 2017.05.10 9100 0
404 Pi SPI란? (Serial Peripheral Interface) 2017.04.20 17857 0
403 Pi LCD interface 종류 및 Driver IC 2017.04.17 8717 0
402 Pi 아두이노의 인터럽트 (interrupt) 사용 2017.04.13 16879 0
401 JAVA [Java] 자바에서 콜백(Callback) 구현하기 2017.03.15 28246 0
400 Android json 데이터 다루기 - GSon 사용법 2017.03.15 11056 0
399 Python json 데이터 핸들링 2017.03.09 11076 0
398 Pi 라즈베리파이 gpio utility 2017.02.15 8539 0
397 C++ STL queue 사용법 2017.02.14 30737 0
396 C++ C++ string 정리 (C++ 문자열) 2017.02.14 15142 0
395 Pi 라즈베리파이 3, Spec & PIN Map file 2017.02.06 33010 0
394 일반 Anet A8 Prusa i3: tips and tricks 2017.02.04 25122 0
393 MFC [Collection] ArrayList 예제 2017.01.25 8975 0
» MFC [Collection] CArray Class 사용법 2017.01.25 18117 0
391 업무 ABS / PLA 2017.01.18 8483 0
목록
Board Pagination ‹ Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 34 Next ›
/ 34

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5