본문 바로가기

전자 공학/MFC

[MFC 독학하기] 12. 집합 클래스(2)

반응형

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

오늘은 집합 클래스에 대한 스터디를 마저 해보려고 합니다.

집합 클래스가 처음이신 분들 혹은 이전 배열 클래스와 리스트 클래스에 대한 내용을

원하시는 분들은 아래 포스팅을 참고해주세요.

2021/01/25 - [전자 공학/MFC] - [MFC 독학하기] 11. 집합 클래스 (1)

그럼 시작해보도록 하겠습니다.


2. 리스트 클래스

 

지난 시간에는 리스트 클래스에 대한 기본 내용만을 다뤄보았습니다.

오늘은 리스트 순회에 대한 내용을 추가적으로 이야기 해보려고 합니다.

리스트 순회라는 것은

리스트의 시작점 또는 끝점부터 포인터를 따라가면서 리스트에 저장된 데이터를 접근하는 것을 말합니다.

 

시작점부터 그 다음 데이터를 따라가는 것을 전방향 순회

끝점부터 이전 데이터를 따라가는 것을 후방향 순회라고 말합니다.

 

지난 시간의 예제에서 Position 아래 부분만을 추가해보았습니다.

GetHeadPosition 함수는 리스트의 시작 위치를 나타내는 값을 POSITION 타입으로 반환을 하기 때문에

POSITION 타입의 변수에 저장을 해두었습니다.

그리고 이 값을 GetNext 함수에 전달하여 맨 앞에서부터 데이터를 차례대로 접근하도록 하고 이를 출력해보았습니다.

반대로 끝에서부터 데이터에 접근하고 싶다고 하시면 GetHeadPosition 함수 대신에 GetTailPostion 함수를 사용하고

GetNext함수 대신에 GetPrev 함수를 사용하시면 됩니다.


3. 맵 클래스

 

맵은 데이터를 저장할 때 키를 이용하여 저장 위치를 결정하는 자료 구조입니다.

 

아래 클래스는 afxtempl.h 헤더 파일이 필요합니다.

데이터 타입은 우리가 원하는 대로 선택할 수 있습니다.

클래스 데이터 타입
CMap 우리가 결정

 

아래 클래스들은 afxcoll.h 헤더 파일이 필요합니다.

이는 데이터 타입을 미리 정해놓고 제공하는 것입니다.

 

클래스 데이터 타입 (키, 데이터)
CMapWordToOb WORD, CObject 포인터
CMapWordToPtr WORD, void 포인터
CMapPtrToWord void 포인터, WORD
CMapPtrToPtr void 포인터, void 포인터
CMapStringToOb 문자열,CObject 포인터

 

맵 클래스에 대한 간단한 예제를 보며 맵에 대한 개념을 익혀보도록 하겠습니다.

 

우선 animal 이라는 맵 객체를 생성했습니다.

 

그리고 []연산자를 이용해서 초기화를 시켜줬습니다.

토끼라는 키에는 rabbit이라는 데이터를 저장하고 개라는 키에는 dog이라는 데이터를 저장하고, 늑대라는 키에는 wolf라는 데이터를 저장했습니다.

 

그리고 Lookup함수를 이용하여 늑대라는 값을 가진 데이터를 검색했꼬 wolf라는 값을 얻을 수 있었습니다.

 

맵에 대한 개념이 조금 잡히시나요?

저도 이번에 처음 접하면서 알게 되었는데 사전과 비슷한 개념이라고 생각하시면 됩니다.

반응형