본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2018. 3. 11.

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)

댓글