Recommendations for Choosing a Collection 클래스
디자인 컬렉션 클래스에 맞게 특정 응용 프로그램을 선택 하는 데 도움이 되는 자세한 정보가 나와 있습니다.
컬렉션 클래스의 선택 요인에 따라 다릅니다.
클래스 셰이프의 기능: 순서, 색인 및 성능, 같이 있는 컬렉션 모양 특징 이 항목의 뒷부분에 나오는 표
C + + 템플릿 클래스를 사용 하는지 여부
컬렉션에 저장 된 요소를 serialize 할 수 있는지 여부
진단 유틸리티에 대 한 컬렉션에 저장 된 요소에 덤프할 수 있습니다 여부
컬렉션의 형식이 안전한 지 여부
다음 표에서 컬렉션 모양 특징, 셰이프 사용 가능한 컬렉션의 특징을 요약 한 것입니다.
2 및 3 번 열 각 모양의 순서에 대해 설명 및 특성에 액세스 합니다.테이블에서 순서 대로 항목이 삽입 및 삭제 된 컬렉션의 순서가 결정 되는 용어 "주문"을 의미 합니다. 이 항목의 내용을 정렬 됩니다 의미 하지는 않습니다.용어는 "인덱스" 컬렉션에 있는 항목을 일반 배열의 항목 처럼 정수 인덱스로 검색할 수 의미 합니다.
4 및 5 번 열 각 모양의 성능에 설명 합니다.컬렉션에 대 한 많은 삽입 해야 하는 응용 프로그램에서는 삽입 속도가 특히 중요 한 수 있습니다. 다른 응용 프로그램의 경우 조회 속도가 더 중요할 수도 있습니다.
6 열 각 셰이프 중복 요소가 허용 되는지 여부를 나타냅니다.
컬렉션 모양 특징
모양 |
정렬 된? |
인덱스? |
요소를 삽입 합니다. |
지정 된 요소 검색 |
요소 중복 가능 |
---|---|---|---|---|---|
List |
예 |
아니요 |
빠른 |
느리게 |
예 |
배열 |
예 |
정수 기준 |
느리게 |
느리게 |
예 |
맵 |
아니요 |
키로 |
빠른 |
빠른 |
(키) 예 (값) |
다음 표에서 MFC 컬렉션 클래스의 특징, 선택에 대 한 지침으로 특정 MFC 컬렉션 클래스의 다른 중요 한 특징을 요약 한 것입니다.MFC의 문서를 통해 해당 요소를 serialize 할 수 있는지 여부를 클래스 C++ 템플릿을 기반으로 됩니다에서 달라질 수 있습니다 serialization 메커니즘, MFC의 진단 덤프 메커니즘을 통해 해당 요소에 덤프할 수 있습니다 여부 또는 클래스의 형식이 안전한 지 여부-즉, 요소의 종류를 보장할 수 있는 여부와 저장 클래스에 기초 하 여 컬렉션에서 검색 합니다.
MFC 컬렉션 클래스의 특징
클래스 |
C + +를 사용합니다. 템플릿 |
수 있습니다. serialize됨 |
수 있습니다. 덤프 |
Is 형식 안전 |
---|---|---|---|---|
CArray |
예 |
예 1 |
예 1 |
아니요 |
CByteArray |
아니요 |
예 |
예 |
예 3 |
CDWordArray |
아니요 |
예 |
예 |
예 3 |
CList |
예 |
예 1 |
예 1 |
아니요 |
CMap |
예 |
예 1 |
예 1 |
아니요 |
CMapPtrToPtr |
아니요 |
아니요 |
예 |
아니요 |
CMapPtrToWord |
아니요 |
아니요 |
예 |
아니요 |
CMapStringToOb |
아니요 |
예 |
예 |
아니요 |
CMapStringToPtr |
아니요 |
아니요 |
예 |
아니요 |
CMapStringToString |
아니요 |
예 |
예 |
예 3 |
CMapWordToOb |
아니요 |
예 |
예 |
아니요 |
CMapWordToPtr |
아니요 |
아니요 |
예 |
아니요 |
CObArray |
아니요 |
예 |
예 |
아니요 |
CObList |
아니요 |
예 |
예 |
아니요 |
CPtrArray |
아니요 |
아니요 |
예 |
아니요 |
CPtrList |
아니요 |
아니요 |
예 |
아니요 |
CStringArray |
아니요 |
예 |
예 |
예 3 |
CStringList |
아니요 |
예 |
예 |
예 3 |
CTypedPtrArray |
예 |
2 달라 집니다. |
예 |
예 |
CTypedPtrList |
예 |
2 달라 집니다. |
예 |
예 |
CTypedPtrMap |
예 |
2 달라 집니다. |
예 |
예 |
CUIntArray |
아니요 |
아니요 |
예 |
예 3 |
CWordArray |
아니요 |
예 |
예 |
예 3 |
1.Serialize 할 컬렉션 개체를 명시적으로 호출 해야 Serialize 작동 합니다. 덤프를 명시적으로 호출 해야 해당 Dump 함수.폼을 사용할 수 없습니다 ar << collObj serialize 또는 폼 dmp<< collObj 덤프 합니다.
2.순차성을 내부 컬렉션 형식에 따라 달라 집니다.형식화 된 포인터 배열을 기반으로 하는 경우 예를 들어, CObArray가 serialize 할 수 있습니다. 기반으로 하는 경우 CPtrArray를 직렬화 할 수 없습니다.일반적으로 "Ptr" 클래스를 직렬화 할 수 없습니다.
3.목적 대로 사용 예에이 열을 표시 하면 비템플릿 기반 컬렉션 클래스 형식 안전적입니다.예를 들어, 바이트를 저장 하는 경우는 CByteArray, 안전한 형식의 배열입니다.하지만 문자를 저장할 수 있으면 형식 안정성이 불확실해 집니다.