티스토리 뷰
목차
[C++ MFC 배열 입력 출력 예제]
MFC CArray 사용법
아래는 CArray를 사용하는 간단한 예제로 2차원 배열로 선언한 예입니다. 이중 배열로 선언해 사용하기 위해선 typedef를 먼저 만들어야 합니다.
1 2 | typedef CArray <double, double> CArrayType; | cs |
다음엔 아래와 같이 MFC CArrayType을 선언합니다.
1 | CArrayType Doubles; | cs |
그리고, 항목을 추가합니다. (D는 Double형 변수)
1 | Doubles.Add (D); | cs |
다시, 반복문으로 채워봅니다.
1 2 3 4 5 | int n = Doubles.GetSize(); for (Index=0; Index<n; ++Index) { d = Doubles[Index] } | cs |
항목을 모두 지울 땐 아래처럼 합니다.
1 | Doubles.RemoveAll; | cs |
내부 항목들은 포인터로 선언되지 않기에 깨끗하게 내부를 비워낼 수 있습니다.
MFC CArray of CArray : 기본 사용법
CArray의 CArray를 생성하는 기본적인 코드는 아래와 같습니다.
1 2 3 4 5 6 7 8 | class CDoublesArray : public CArray<double, double> { public: void operator= (const CDoublesArray& DoublesArray) { RemoveAll(); Append(DoublesArray); } }; | cs |
생성한 뒤, 2차원 배열 사용하는 예는 아래와 같습니다.
1 2 3 4 5 6 7 | CArray<CDoublesArray, CDoublesArray&> ArrayArray; CDoublesArray DoublesArray; DoublesArray.Add(9); DoublesArray.Add(99); ArrayArray.Add(DoublesArray); | cs |
[C++ MFC 배열 입력 출력 예제]
MFC CArray of CArray : 복합 사용법
클래스나 구조체의 CArray of CArray를 생성하기 위해선 복사 생성자가 필요합니다. 그래서, 아래처럼 하나의 클래스를 먼저 생성합니다.
1 2 3 4 5 | class CBase { public: int BasePoly; }; | cs |
CBase 클래스를 기반으로 클래스의 CArray를 생성할 수 있습니다. 2차원 배열은 CArray of CArray로 표현합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class CBaseArray : public CArray<CBase, CBase&> { public: CBaseArray() : CArray<CBase, CBase&>() {}; CBaseArray(const CBaseArray &BaseArray) { RemoveAll(); Append(BaseArray); } void operator= (const CBaseArray &BaseArray) { RemoveAll(); Append(BaseArray); } }; | cs |
아래의 코드는 MFC CArray 클래스와 CArrayBase 클래스를 응용한 2차원 배열 사용법니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int i1, i2; CBase Base; CBaseArray BaseArray; CArray<CBaseArray, CBaseArray&> BaseArrayArray; Base.BasePoly = 99; BaseArray.Add(Base); Base.BasePoly = 98; BaseArray.Add(Base); Base.BasePoly = 59; BaseArray.Add(Base); BaseArrayArray.Add(BaseArray); BaseArray.RemoveAll(); Base.BasePoly = 9; BaseArray.Add(Base); Base.BasePoly = 8; BaseArray.Add(Base); Base.BasePoly = 5; BaseArray.Add(Base); BaseArrayArray.Add(BaseArray); for (i1 = 0; i1 < BaseArrayArray.GetSize(); ++i1) { for (i2 = 0; i2 < BaseArrayArray[i1].GetSize(); ++i2) { // Do something with BaseArrayArray[i1][i2] } } | cs |
관련 글
CArray 배열 사용 방법
https://codingcoding.tistory.com/488
CByteArray 사용법
https://codingcoding.tistory.com/846
3가지 배열 예제 (CByteArray, CWordArray, CUnitArray)
https://codingcoding.tistory.com/489
동적 메모리 할당 이해하기