안녕하세요. 취업한 공대누나입니다.
오늘은 MFC에서 집합 클래스에 대한 이야기를 해보려고 합니다.
집합 클래스는 배열, 연결 리스트와 같은 자료 구조를 편리하게 사용할 수 있도록 MFC에서 제공하는 클래스입니다.
MFC에서 제공되는 배열 클래스는 크게 배열, 리스트, 맵 세종류가 있습니다.
1. 배열 클래스
아래 클래스는 afxtempl.h 헤더 파일이 필요합니다.
배열에 저장할 데이터 타입을 우리가 원하는대로 선택할 수 있습니다.
클래스 | 데이터 타입 |
CArray | 우리가 결정 |
아래 클래스들은 afxcoll.h 헤더 파일이 필요합니다.
이는 데이터 타입을 미리 정해놓고 제공하는 것입니다.
클래스 | 데이터 타입 |
CByteArray | Byte |
CWordArray | Word |
CDWordArray | Dword |
CUIntArray | Uint |
CStringArray | CString |
CPtrArray | void 포인터 |
CObArray | CObject 포인터 |
같이 주로 사용하는 함수들은 아래와 같습니다.
함수 | 기능 |
SetSize | 배열의 크기를 지정한다. |
GetSize | 현재 배열에 저장된 항목의 갯수를 반환한다. |
InsertAt | 해당 인덱스에 값을 넣어줍니다. |
RemoveAt | 지정된 인덱스의 항목을 삭제합니다. |
RemoveAll | 배열의 모든 항목을 삭제합니다. |
함수와 배열 클래스를 사용한 간단한 예제를 보도록 하겠습니다.
![]() |
CUintArray test로 test라는 객체를 생성하였습니다.
SetSize 함수를 이용해서 배열의 사이즈를 결정하고, 테스트를 위한 값을 넣어주었습니다.
InsertAt이라는 함수를 괜히 사용해보고 싶어서 10번 인덱스의 값을 500으로 바꾼 후 출력 또한 해보았습니다.
2. 리스트 클래스
리스트는 데이터를 포인터로 연결해 놓은 자료 구조를 말합니다.
연결 리스트(Linked List)라고도 많이 부릅니다.
아래 클래스는 afxtempl.h 헤더 파일이 필요합니다.
리스트에 저장할 데이터 타입을 원하는대로 선택할 수 있습니다.
클래스 | 데이터 타입 |
CList | 우리가 결정 |
아래 클래스들은 afxcoll.h 헤더 파일이 필요합니다.
이는 데이터 타입을 미리 정해놓고 제공하는 것입니다.
클래스 | 데이터 타입 |
CObList | CObject 포인터 |
CPtrList | void 포인터 |
CStringList | CString 객체 |
마찬가지로 자주 사용되는 함수들에 대해 보도록 하겠습니다.
함수 | 기능 |
GetCount | 리스트에 저장된 항목의 갯수를 반환합니다. |
GetHead | 첫 노드의 값을 반환합니다. |
GetTail | 마지막 노드의 값을 반환합니다. |
GetHeadPosition | 첫 노드의 포인터를 반환합니다. |
GetTailPosition | 마지막 노드의 포인터를 반환합니다. |
SetAt | 포인터가 가리키는 값을 설정합니다. |
InsertAfter/InsertBefore | 포인터가 가리키는 노드 앞/뒤에 새로운 노드를 추가합니다. |
Find | 주어진 값을 갖는 노드를 찾아서 그 노드의 포인터를 반환합니다 |
간단하게 예제를 봐보도록 하겠습니다.
![]() |
CString의 객체를 리스트에 저장을 해보는 예제입니다.
animal에 토끼, 강아지, 늑대를 저장한 후 리스트 객체를 생성하고 리스트 끝에 데이터를 추가했습니다.
위의 예제에서 모두 출력해 보지는 않았지만 내부적으로 토끼(Head)-강아지-늑대(Tail)의 순서대로 저장되었습니다.
마지막에 Tail을 출력해 보았을 때 늑대가 잘 들어가있음을 알 수 있습니다.
내용이 조금 길어지는 것 같아서 집합 클래스에 대한 내용을 이분할 하였습니다.
다음 시간에 리스트 클래스에 대해 마저 알아보고 맵 클래스에 대한 내용도 다뤄보겠습니다.
'전자 공학 > MFC' 카테고리의 다른 글
[MFC 독학하기] 13. MFC 응용 프로그램 만들기(1) (0) | 2021.01.29 |
---|---|
[MFC 독학하기] 12. 집합 클래스(2) (0) | 2021.01.27 |
[MFC 독학하기] 10. CTime, CTimeSpan 클래스 (0) | 2021.01.23 |
[MFC 독학하기] 9. CPoint, CRect, CSize 클래스 (0) | 2021.01.21 |
[MFC 독학하기] 7. 콘솔 응용프로그램 (0) | 2021.01.17 |