컬렉션
Microsoft Foundation Class 라이브러리는 개체 그룹을 관리하기 위한 컬렉션 클래스를 제공합니다. 이러한 클래스는 두 가지 유형입니다.
참고 항목
코드에 이미 비템플릿 컬렉션 클래스가 사용되는 경우 이를 계속 사용할 수 있습니다. 고유 데이터 형식에 대해 새로운 형식 안전 컬렉션 클래스를 작성하는 경우 템플릿 기반의 신규 클래스를 사용하는 것이 좋습니다.
컬렉션 셰이프
컬렉션 클래스는 "모양" 및 요소의 유형에 따라 분류됩니다. 모양은 컬렉션에서 개체가 구성 및 저장되는 방법을 나타냅니다. MFC는 세 가지 컬렉션 모양으로 목록, 배열 및 맵(사전이라고도 부름)을 제공합니다. 특정 프로그래밍 문제에 가장 적합한 컬렉션 모양을 선택하면 됩니다.
제공된 세 가지 컬렉션 모양에 대해서는 이 항목의 뒷 부분에서 간단히 설명합니다. 프로그램에 가장 적합한 셰이프의 기능을 비교하려면 컬렉션 클래스 선택에 대한 권장 사항 참조하세요.
List
목록 클래스는 이중으로 링크된 목록으로 구현되는 정렬되었고 인덱싱되지 않은 요소 목록을 제공합니다. 목록에는 "머리"와 "꼬리"가 포함되며, 머리 또는 꼬리에서 요소를 추가 또는 제거하거나, 가운데에서 요소를 삽입 또는 삭제는 작업은 속도가 매우 빠릅니다.
배열
배열 클래스는 개체에 대해 동적으로 크기가 조정되고, 정렬되었으며, 정수로 인덱싱된 배열을 제공합니다.
맵(사전이라고도 부름)
맵은 키 개체를 값 개체와 연결하는 컬렉션입니다.
템플릿 기반 컬렉션 클래스
모든 형식의 개체를 포함하는 형식 안전 컬렉션을 구현하는 가장 쉬운 방법은 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 |
컬렉션 클래스 선택을 위한 권장 사항 MFC 컬렉션 클래스 테이블의 특징은 이러한 특성(셰이프 이외의)을 기준으로 MFC 컬렉션 클래스를 설명합니다.
클래스에서 C++ 템플릿이 사용되는지 여부
컬렉션에 저장된 요소의 serialize 가능 여부
컬렉션에 저장된 요소를 진단용으로 덤프할 수 있는지 여부
컬렉션이 형식 안전인지 여부