본문 바로가기

전자 공학/MFC

[MFC 독학하기] 11. 집합 클래스 (1)

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 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을 출력해 보았을 때 늑대가 잘 들어가있음을 알 수 있습니다.


내용이 조금 길어지는 것 같아서 집합 클래스에 대한 내용을 이분할 하였습니다.

다음 시간에 리스트 클래스에 대해 마저 알아보고 맵 클래스에 대한 내용도 다뤄보겠습니다.

반응형