티스토리 뷰

목차

    반응형

    MFC강좌, CArray 배열 사용 방법 (이중배열 포함 get sest)


    기본적인 데이터 추가 예

    Add, SetAt, SetAtGrow로 데이터를 추가할 수 있고, 추가하기 전에 SetSize로 배열의 크기를 지정해 줘야 합니다.

    Add는 일반적으로 사용자가 원하는 위치에 들어가지 않을수가 있어서 사용시 주의해야합니다.


    MFC강좌, CArray 배열 사용 방법 (이중배열 포함)[MFC 예제] 구조체 배열 사용법


    1. SetSize()


    1
    2
    3
    4
    5
    6
    7
    8
    9
    CArray m_aTest;
     
    m_aTest.SetSize(3);
    m_aTest.Add("가나다");
    m_aTest.Add("라마바");
    m_aTest.Add("사아자");
     
    for(int i = 0; i < m_aTest.GetSize(); i++)
        TRACE("m_aTest[%d] = %s\r\n", i, m_aTest[i]);
    cs


    [Output]


    1
    2
    3
    4
    5
    6
    m_aTest[0= 
    m_aTest[1= 
    m_aTest[2= 
    m_aTest[3= 가나다
    m_aTest[4= 라마바
    m_aTest[5= 사아자
    cs

    2. Add()


    1
    2
    3
    4
    5
    6
    m_aTest.Add("가나다");
    m_aTest.Add("라마바");
    m_aTest.Add("사아자");
     
    for(int i = 0; i < m_aTest.GetSize(); i++)
        TRACE("m_aTest[%d] = %s\r\n", i, m_aTest[i]);
    cs


    [Output]

    1
    2
    3
    m_aTest[0= 가나다
    m_aTest[1= 라마바
    m_aTest[2= 사아자
    cs


    3. SetAtGrow() 


    1
    2
    3
    4
    5
    6
    m_aTest.SetAtGrow(0"가나다");
    m_aTest.SetAtGrow(1"라마바");
    m_aTest.SetAtGrow(2"사아자");
     
    for(int i = 0; i < m_aTest.GetSize(); i++)
        TRACE("m_aTest[%d] = %s\r\n", i, m_aTest[i]);
    cs


    [Output]

    1
    2
    3
    m_aTest[0= 가나다
    m_aTest[1= 라마바
    m_aTest[2= 사아자
    cs


    MFC 강좌 CArray[MFC 예제] 구조체 배열 사용법


    4. SetAt()


    1
    2
    3
    4
    5
    6
    7
    m_aTest.SetSize(4);
    m_aTest.SetAt(0"가나다");
    m_aTest.SetAt(1"라마바");
    m_aTest.SetAt(3"사아자");
     
    for(int i = 0; i < m_aTest.GetSize(); i++)
        TRACE("m_aTest[%d] = %s\r\n", i, m_aTest[i]);
    cs


    [Output]

    1
    2
    3
    4
    m_aTest[0= 가나다
    m_aTest[1= 라마바
    m_aTest[2= 
    m_aTest[3= 사아자
    cs

    5. SetAt()


    1
    2
    3
    4
    5
    6
    m_aTest.SetAt(0"가나다");
    m_aTest.SetAt(1"라마바");
    m_aTest.SetAt(2"사아자");
     
    for(int i = 0; i < m_aTest.GetSize(); i++)
        TRACE("m_aTest[%d] = %s\r\n", i, m_aTest[i]);
    cs


    [Output]


    1
    !!!Error(크기 미지정)
    cs


    동적으로 2중 배열 사용

    예를들어, 아래처럼 20개의 데이터를 담을 수 있는 배열을 선언해 봅니다.

    처음엔 SetSize를 10으로 주었다가 20으로 늘린 이후, 늘어난 배열의 길이만큼 데이터를 또 채워줍니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CUIntArray array;
    array.SetSize (10);
     
    for (int i=0; i<10; i++)
        array[i] = i + 1;
    .....
    .....
    .....
    array.SetSize (20);
     
    for (i=10; i<20; i++)
        array[i] = i + 1;
    cs


    그렇지만 이것은 MFC의 이중 배열은 아닙니다. 우리가 원하는 2중 배열의 모습을 아직은 갖추지 못했습니다.


    MFC 강좌 CArray 배열 사용[MFC 예제] 구조체 배열 사용법


    다시, 처음으로 돌아가 다시 살펴보겠습니다.


    1
    2
    3
    4
    array.SetSize (10);
     
    for (i=0; i<10; i++)
        array[i] = i + 1;
    cs


    위와 같은 배열을 하나 만든 이후에 아래처럼 값을 추가해주면 2중 배열이 됩니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    array.SetSize (10);
     
    for (i=0; i<10; i++)
    {
        for(j=0; j<3; j++)
        {
            array[i].InsertAt(j, i + j);
        }
    }
    cs


    MFC강좌, CArray 배열 사용 방법 (이중배열 포함)[MFC 예제] 구조체 배열 사용법


    값을 가져올 땐 아래처럼 사용합니다.


    1
    2
    3
    4
    5
    6
    7
    for (i=0; i<10; i++)
    {
        for(j=0; j<3; j++)
        {
            array[i].GetAt(j);
        }
    }
    cs


    항상 2중 배열임을 잊지말고 정확하게 사용해줘야 합니다.


    1
    2
    3
    4
    5
    array.GetSize();
     = 1
     
    array[0].GetSize();
     = 3
    cs


    MFC강좌, CArray 배열 사용 방법 (이중배열 포함 get set)

    반응형