안녕하세요. 취업한 공대누나입니다.
오늘은 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 |