Microsoft Foundation 클래스 라이브러리는 개체 그룹을 관리하는 컬렉션 클래스를 제공합니다. 이러한 클래스는 다음 두 가지 형식으로 구성됩니다.
비고
코드에서 이미 비템플레이트 컬렉션 클래스를 사용하는 경우 계속 사용할 수 있습니다. 사용자 고유의 데이터 형식에 대해 형식이 안전한 새 컬렉션 클래스를 작성하는 경우 최신 템플릿 기반 클래스를 사용하는 것이 좋습니다.
컬렉션 형태
컬렉션 클래스는 해당 "셰이프"와 해당 요소의 형식으로 특징지어집니다. 도형은 컬렉션에서 개체를 구성하고 저장하는 방식을 나타냅니다. MFC는 목록, 배열 및 맵(사전이라고도 함)의 세 가지 기본 컬렉션 셰이프를 제공합니다. 특정 프로그래밍 문제에 가장 적합한 컬렉션 셰이프를 선택할 수 있습니다.
제공된 세 가지 컬렉션 셰이프 각각은 이 항목의 뒷부분에서 간략하게 설명합니다. 프로그램에 가장 적합한 셰이프의 기능을 비교하려면 컬렉션 클래스 선택에 대한 권장 사항을 참조하세요.
목록
목록 클래스는 이중 연결 목록으로 구현된 정렬된 인덱스되지 않은 요소 목록을 제공합니다. 목록에는 "머리"와 "꼬리"가 있으며 머리 또는 꼬리에서 요소를 추가하거나 제거하거나 중간에 요소를 삽입하거나 삭제하는 것이 매우 빠릅니다.
배열
배열 클래스는 동적으로 크기가 조정되고 순서가 지정된 정수 인덱싱된 개체 배열을 제공합니다.
지도(사전이라고도 함)
map은 키 개체를 값 개체와 연결하는 컬렉션입니다.
Template-Based 컬렉션 클래스
모든 형식의 개체를 포함하는 형식 안전 컬렉션을 구현하는 가장 쉬운 방법은 MFC 템플릿 기반 클래스 중 하나를 사용하는 것입니다. 이러한 클래스의 예제는 MFC 샘플 COLLECT를 참조 하세요.
다음 표에서는 MFC 템플릿 기반 컬렉션 클래스를 나열합니다.
컬렉션 템플릿 클래스
컬렉션 콘텐츠 | 배열 | 목록 | 지도 |
---|---|---|---|
모든 형식의 개체 컬렉션 | CArray |
CList |
CMap |
모든 형식의 개체에 대한 포인터 컬렉션 | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
템플릿을 기반으로 하지 않는 컬렉션 클래스
애플리케이션이 이미 MFC 비템플레이트 클래스를 사용하는 경우 계속 사용할 수 있습니다. 그러나 새 컬렉션의 경우 템플릿 기반 클래스를 사용하는 것이 좋습니다. 다음 표에서는 템플릿을 기반으로 하지 않는 MFC 컬렉션 클래스를 나열합니다.
비템플릿 컬렉션 클래스
배열 | 목록 | 지도 |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
컬렉션 클래스를 선택하기 위한 Recommendations의 MFC 컬렉션 클래스 테이블 특성은 이러한 특성(셰이프 이외의)을 기준으로 MFC 컬렉션 클래스를 설명합니다.
클래스에서 C++ 템플릿을 사용하는지 여부
컬렉션에 저장된 요소를 serialize할 수 있는지 여부
진단용으로 컬렉션에 저장된 요소를 덤프할 수 있는지 여부
컬렉션의 형 안전성 여부