CAFE

프로그램관련

[MFC/C#/.NET]CArray 복합 응용 방법(CArray of CArray)

작성자gamja|작성시간14.02.04|조회수1,604 목록 댓글 0

http://simplesamples.info/simplesamples.info/MFC/Collections/CArray.html

CArray

아래는 CArray를 사용하는 간단한 예제로 이중 배열로 선언한 예입니다.
이중 배열로 선언해 사용하기 위해선 typedef를 먼저 만들어야 합니다.
typedef CArray <double, double>
CArrayType;

다음엔 아래와 같이 CArrayType를 선언합니다.
CArrayType Doubles;

그리고, 항목을 추가합니다(D는 Double형 변수)
Doubles.Add (D);

다시, 반복문으로 채워봅니다.
int n = Doubles.GetSize();

for (Index=0; Index<n; ++Index) {
d = Doubles[Index]
}

항목을 모두 지울 땐 아래처럼 합니다.
Doubles.RemoveAll;

내부 항목들은 포인터로 선언되지 않기에 깨끗하게 내부를 비워낼 수 있습니다.


CArray of CArray : 기본

CArray의 CArray를 생성하는 기본적인 코드는 아래와 같습니다.
class CDoublesArray : public CArray<double, double> {

public:
void operator= (const CDoublesArray& DoublesArray) {
RemoveAll();
Append(DoublesArray);
}
};

생성한 뒤, 사용하는 예는 아래와 같습니다.
CArray<CDoublesArray, CDoublesArray&> ArrayArray;
CDoublesArray DoublesArray;

DoublesArray.Add(9);
DoublesArray.Add(99);

ArrayArray.Add(DoublesArray);


CArray of CArray : 복합

클래스나 구조체의 CArray of CArray를 생성하기 위해선 복사 생성자가 필요합니다.
그래서, 아래처럼 하나의 클래스를 먼저 생성합니다.
class CBase {

public:
int BasePoly;
};

CBase 클래스를 기반으로 클래스의 CArray를 생성할 수 있습니다.
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);
}
};

아래의 코드는 CArray 클래스와 CArrayBase 클래스를 응용한 2중 배열 사용의 예입니다.
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]
}}
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼