MFC Collection Class
- 동적인 할당이 가능.
배열 : 고정된 크기, fixed, CArray, 템플릿 인자 2개
리스트 : 동적인 크기, dynamic, CList, 템플릿 인자 2개
- 시작은 head, 끝은 tail, single linked list, double linked list.
map : hash, dictionary, CMap, 템플릿 인자 4개
template : 클래스명<타입> 형태로 사용.
예) CArray<CString, &CString> = CStringArray
CObList : CObject들에 대한 리스트
CPtrList : void 포인터에 대한 리스트
C***List 관련 멤버 함수들
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
새로운 element나 새로운 element들의 list들을 현재 list 처음(머리)에 추가한다.
참고주소 : http://msdn.microsoft.com/en-us/library/xt4h9bcy.aspx
리턴 : (첫번째 형태)새롭게 추가된 element의 POSITION 값.
newElement : 현재(this) 리스트에 추가될 CObject 포인터
pNewList : 다른 CObject list에 대한 포인터. pNewList의 element들은 현재(this) 리스트에 추가될 것이다.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
CObject* RemoveHead();
리스트의 처음(머리)부분에서 element를 때어내서 그 포인터를 리턴한다.
참고주소 : http://msdn.microsoft.com/en-us/library/fxh91dxe.aspx
리턴 : 이전 리스트의 처음 부분의 CObject 포인터
CObject* RemoveTail();
리스트의 끝(꼬리)부분에서 element를 때어내서 그 포인터를 리턴한다.
참고주소 : http://msdn.microsoft.com/en-us/library/dwk4watk.aspx
리턴 : 현재 리스트의 끝 부분이었던 CObject 포인터
POSITION InsertAfter(POSITION position, CObject* newElement);
지정한 위치 element 뒤에 하나의 element를 현재 리스트로 추가한다.
참고주소 : http://msdn.microsoft.com/en-us/library/2fyts00d.aspx
리턴 : position값과 똑같은 값을 가진 POSITION값
position : 이전 GetNext, GetPrev, Find 멤버 함수 호출에 의해 리턴된 POSITION값
newElement : 현재 리스트로 추가될 Cobject 포인터
POSITION InsertBefore(POSITION position, CObject* newElement);
지정한 위치 element 앞에 하나의 element를 현재 리스트에 추가한다.
참고주소 : http://msdn.microsoft.com/en-us/library/h28xk22y.aspx
POSITION GetHeadPosition( ) const;
현재 리스트의 처음(머리) element의 위치를 얻는다.
참고주소 : http://msdn.microsoft.com/en-us/library/c62790bz.aspx
리턴 : 순회나 CObject 포인터를 얻는데 사용될 수 있는 POSITION값
POSITION GetTailPosition( ) const;
현재 리스트의 끝(꼬리) element의 위치를 얻는다.
참고주소 : http://msdn.microsoft.com/en-us/library/b7tsb28a.aspx
리턴 : 순회나 CObject 포인터를 얻는데 사용될 수 있는 POSITION값
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
rPosition으로 확인된 리스트 element를 얻고 이 리스트의 다음 목록의 POSITION 값으로 rPosition을 설정한다.
참고주소 : http://msdn.microsoft.com/en-us/library/w231818s.aspx
리턴 : rPosition 위치의 CObject 객체를 얻는다. const일 경우 수정으로부터 보호되지만 const가 없을 경우 리스트는 수정될 수 있다.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
rPosition으로 확인된 리스트 element를 얻고 이 리스트의 이전 목록의 POSITION 값으로 rPosition을 설정한다.
참고주소 : http://msdn.microsoft.com/en-us/library/597w29w2.aspx
리턴 : rPosition 위치의 CObject 객체를 얻는다. const일 경우 수정으로부터 보호되지만 const가 없을 경우 리스트는 수정될 수 있다.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
POSITION에 해당하는 CObject를 얻는다.
참고주소 : http://msdn.microsoft.com/en-us/library/y66y9ccz.aspx
리턴 : rPosition 위치의 CObject 객체를 얻는다. const일 경우 수정으로부터 보호되지만 const가 없을 경우 리스트는 수정될 수 있다.
※ 객체를 Remove한다고 해서 지워지는 것이 아니고 리스트에서만 없어지는 것이다. 그러므로 나중에 해당 객체를 지워주어야(deallocate) 한다.
※ Remove계열 멤버 함수는 객체를 지울 때 사용
'컴퓨터 공부 > MFC 프로그래밍' 카테고리의 다른 글
[5월 25일 1교시] Document 읽고 쓰기 2 (0) | 2009.05.25 |
---|---|
[5월 22일 3교시] Document 읽고 쓰기 1 (0) | 2009.05.22 |
[5월 21일 3교시] 뷰로부터 document 분리 (0) | 2009.05.21 |
[5월 21일 2교시] 트레이 아이콘 (0) | 2009.05.21 |
[5월 21일 1교시] 고급 이벤트 메세지 2 (0) | 2009.05.21 |