다음을 통해 공유


CAtlMap::CAtlMap

 

생성자입니다.

구문

      CAtlMap(
   UINT nBins = 17,
   float fOptimalLoad = 0.75f,
   float fLoThreshold = 0.25f,
   float fHiThreshold = 2.25f,
   UINT nBlockSize = 10 
) throw ( );

매개 변수

  • nBins
    수 저장된 요소에 대 한 포인터를 제공 하는 저장소입니다. 저장소 설명은이 항목의 뒷부분에 나오는 설명 부분을 참조 하십시오.

  • fOptimalLoad
    최적의 로드 비율입니다.

  • fLoThreshold
    로드 비율에 대 한 하한값입니다.

  • fHiThreshold
    로드 비율에 대 한 상한값입니다.

  • nBlockSize
    블록 크기입니다.

설명

CAtlMap첫 번째 키에서 해시 알고리즘을 사용 하 여 인덱스를 만들면 모든 저장된 요소를 참조 합니다. 이 인덱스는 "저장 된 요소에 대 한 포인터를 포함 하는 저장소" 참조 합니다. 저장소에 이미 사용 중인 경우 후속 요소에 액세스 하는 연결 목록이 만들어집니다. 목록 탐색 보다는 올바른 요소에 직접 액세스 속도가 느리고 맵 구조 저장소 성능 요구 사항을 균형을 유지 해야 하므로. 대부분의 경우 좋은 결과 제공 하는 기본 매개 변수 선택 되었습니다.

로드 맵 개체에 저장 된 요소 수가 저장소의 수의 비율이입니다. 맵 구조를 다시 계산할 때의 fOptimalLoad 매개 변수 값 필요 함 계산에 사용 됩니다. 사용 하 여이 값을 변경할 수 있는 CAtlMap::SetOptimalLoad 메서드.

fLoThreshold 매개 변수는 로드 비율 이전에 도달할 수 있는 더 낮은 값 CAtlMap 맵 최적의 크기가 다시 계산 됩니다.

fHiThreshold 매개 변수 로드 비율 이전에 도달할 수 있는 상한 값입니다는 CAtlMap 개체 맵 최적의 크기를 다시 계산 됩니다.

기본적으로 (해싱하여로 알려진)이 재계산 프로세스입니다. 이 프로세스는 많은 데이터를 한 번 호출을 입력할 때 아마도 사용 하지 않을 경우는 CAtlMap::DisableAutoRehash 메서드. 활성화에 CAtlMap::EnableAutoRehash 메서드.

nBlockSize 매개 변수에 새 요소를 필요할 때 할당 된 메모리의 양 측정 한 것입니다. 블록 크기가 클수록 줄이는 메모리 할당 루틴을 호출 하지만 더 많은 리소스를 사용 합니다.

데이터 저장 하기 전에 해시 테이블에 대 한 호출을 초기화할 필요는 CAtlMap::InitHashTable.

예제

// Create a map which stores a double
// value using an integer key

CAtlMap<int, double> mySinTable;
int i;

// Initialize the Hash Table
mySinTable.InitHashTable(257);

// Add items to the map
for (i = 0; i < 90; i++)
   mySinTable[i] = sin((double)i);

// Confirm the map is valid
mySinTable.AssertValid();

// Confirm the number of elements in the map
ATLASSERT(mySinTable.GetCount() == 90);

// Remove elements with even key values
for (i = 0; i < 90; i += 2)
   mySinTable.RemoveKey(i);

// Confirm the number of elements in the map
ATLASSERT(mySinTable.GetCount() == 45);

// Walk through all the elements in the map.
// First, get start position.
POSITION pos;
int key;
double value;
pos = mySinTable.GetStartPosition();

// Now iterate the map, element by element
while (pos != NULL) 
{
   key = mySinTable.GetKeyAt(pos);
   value = mySinTable.GetNextValue(pos);
}

요구 사항

헤더: atlcoll.h

참고 항목

CAtlMap Class
CAtlMap::~CAtlMap